Java创建随机数的四种方式总结

目录
  • c语言随机数
  • java
    • 1.Random
    • 2.SecureRandom
    • 3.ThreadLocalRandom
    • 4.Math.Random
  • 完整代码

第一次接触到随机数还是在c语言里面 使用的是 rand(); 但是重新执行一次的时候会发现,诶,居然和上一次执行的结果是一样的,因为没有初始化种子,所以系统用的都是统一的种子这时就会出现每次产生的随机数都一样,这时就会使用到 srand();这个随机数的发生器, 把种子给定当前的时间 即 srand((unsigned) time (&t)); 我c语言常用的随机数函数如下:

c语言随机数

#include <stdio.h>

int main(void) {

	int left,right;
	printf("请输入一个数:");
	scanf_s("%d%d",&left,&right);
	//srand((unsigned)time(NULL));
	//for(int i = 0; i<10; i++)
	//printf("%d\n",rand() % one);

	//改进
	for (int i = 0; i < 10; i++)
	printf("随机值如下:%d\n", srandNext(left, right));

	return 0;
}

/********************************************************************************
* @Function: srandNext
* @Description:Find a random integer from min to max
* @Author: caiziqi
* @Version: 1.1
* @formal parameter:min : is the minimum value of the value range of this random number function, max: is the maximum value range of this random number function
* @Date: 2022-7-26
* @Return : returns a random integer
********************************************************************************/

int srandNext(int max,int min) {

	//To prevent users from passing parameters incorrectly
	if (max <= min) {
		if (max == min) {
			return max;
		}
		int temp = max;
		max = min;
		min = temp;
	}

	unsigned int static seed = 0;
	seed++;

	srand((unsigned)time(NULL) + seed * seed);

	return rand() % (max - min + 1) + min;
}

当然这不是最主要的今天是要讲我学到的java中的四种创建随机数的方法

java

以下代码都是以a ~ b 之间 求出一个随机整数

1.Random

创建对象

Random ra = new Random();
int right = (Math.max(a,b)) ;
int left = (Math.min(a,b);

int nu = (ra.nextInt(right) + left );

取值范围 left 最小值 right 最大值

2.SecureRandom

创建对象

SecureRandom sra = new SecureRandom();
int right = (Math.max(a,b)) ;
int left = (Math.min(a,b);

int nu = (sra .nextInt(right) + left );

取值范围 left 最小值 right 最大值

3.ThreadLocalRandom

创建对象

ThreadLocalRandom tra = ThreadLocalRandom.current();

求出随机数的左值和右值

int right = (Math.max(a,b)) ;
int left = (Math.min(a,b);

int nu = (tra .nextInt(right) + left );

取值范围 left 最小值 right 最大值

4.Math.Random

由于 Math 里面的方法是静态的所以可以直接 类名.方法名 使用

int number = (int)(a + Math.random()*(b-a+1)) //返回一个int类型的参数 所以用 int 接收

范围 a <= 随机数 < (b -a +1)

2 <= 随机数 < (4 -2 +1 )

完整代码

import java.security.SecureRandom;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.ThreadLocalRandom;

public class FourWaysOfRandomNumbers {
    public static void main(String[] args) {
        //用户输入两个数, 然后程序取这两个数里面的其中随机一个数
        Scanner input =  new Scanner(System.in);
        System.out.print("请输入两个数:");
        int a = input.nextInt();
        int b = input.nextInt();

        // 取值范围   left 最小值    right 最大值
        int right = Math.max(a,b);
        int left = Math.min(a,b);
        int nu;

        //四种生成随机数的方法

        //第一种
        Random ra = new Random();
             while( true){
            nu =(ra.nextInt(right) + left ) ;
            System.out.println(nu);

            //找到最大随机整数 输出并结束
            if(nu == right) {

                System.out.println(nu);
                return;
            }
        }

        //第二种
/*
        SecureRandom sra = new SecureRandom();

        while(true){
            nu =(sra.nextInt(right) + left ) ;
            System.out.println(nu);

            //找到最大随机整数 输出并结束
            if(nu == right) {
                System.out.println(nu);
                return;
            }
        }*/

        //第三种  在多线程的时候使用 是最佳的; 因为它会为每个线程都 使用不同的种子
       /* ThreadLocalRandom tra =  ThreadLocalRandom.current();
        while(true){
            nu =(tra.nextInt(right) + left ) ;
            System.out.println(nu);

            //找到最大随机整数 输出并结束
            if(nu == right) {
                System.out.println(nu);
                return;
            }
        }*/

      /*  //第四种
         int value = (int)(a + Math.random()*(b-a+1));
        System.out.println(value);
*/

    }

}

到此这篇关于Java创建随机数的四种方式总结的文章就介绍到这了,更多相关Java创建随机数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java案例实现不重复的随机数

    需求:获得十个1-20的随机数,要求随机数不能重复,存储到集合中并遍历 分析: 1.创建Set集合对象,可以使用HashSet也可以使用TreeSet,区别在于TreeSet是排序后的 2.创建随机数对象,获取一个随机数 3.判断集合长度是否大于10,是停止生成.存储并遍历 否:继续生成直到长度大于10停止生成.存储并遍历 4.输出 代码: public class SetDemo {   public static void main(String[] args) {       //创建Se

  • Java中生成随机数的4种方式与区别详解

    目录 在 Java 中,生成随机数的场景有很多,所以本文我们就来盘点一下 4 种生成随机数的方式,以及它们之间的区别和每种生成方式所对应的场景. 1.Random Random 类诞生于 JDK 1.0,它产生的随机数是伪随机数,也就是有规则的随机数.Random 使用的随机算法为 linear congruential pseudorandom number generator (LGC) 线性同余法伪随机数.在随机数生成时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的

  • Java两种常用的随机数生成方式(小白总结)

    人机交互过程中,当我们需要机器给我们反馈不确定的数字结果时,就会需要用到随机数了,那么,在Java中,我们应当如何来生成并使用随机数呢? 一.通过Random类来实现 Random类是JDK的java.util包中的一个工具类,该类可用于在指定范围内产生随机数字.考察一下Random类的两种构造方法:无参构造和有参构造 Random(): 无参构造方法创建一个伪随机数生成器.Random(long seed):有参构造方法使用一个long型的种子创建伪随机数生成器. 下面分别使用两种方式创建Ra

  • java的三种随机数生成方式

    目录 第一种 第二种 第三种 随机数的产生在一些代码中很常用,也是我们必须要掌握的.而java中产生随机数的方法主要有三种: 第一种:new Random() 第二种:Math.random() 第三种:currentTimeMillis() 第一种 第一种需要借助java.util.Random类来产生一个随机数发生器,也是最常用的一种,构造函数有两个,Random()和Random(long seed).第一个就是以当前时间为默认种子,第二个是以指定的种子值进行.产生之后,借助不同的语句产生

  • Java和C的随机数(Random)详解

    目录 一.前言 二.随机数的创建步骤 1.导包 2.创建对象: 3.数据接收 三.Java随机数游戏 四. c语言的猜数字示例图: 总结 一.前言 前面我们学习了Java中的运算符,对运算符也有一些了解了,现在我们来学习一个 新的但且非常有意思的---随机数,随机数的用处在生活中比较少见,但是用处并不少, 比如一些小游戏的制作等等. 二.随机数的创建步骤 1.导包 所谓导包就是在Java中已经定义好的文件,我们直接引用过来即可 随机数导包: import java.util.Random; 2.

  • Java创建随机数的四种方式总结

    目录 c语言随机数 java 1.Random 2.SecureRandom 3.ThreadLocalRandom 4.Math.Random 完整代码 第一次接触到随机数还是在c语言里面 使用的是 rand(); 但是重新执行一次的时候会发现,诶,居然和上一次执行的结果是一样的,因为没有初始化种子,所以系统用的都是统一的种子这时就会出现每次产生的随机数都一样,这时就会使用到 srand();这个随机数的发生器, 把种子给定当前的时间 即 srand((unsigned) time (&t))

  • java 创建线程的四种方式

    1.继承Thread类方式 这种方式适用于执行特定任务,并且需要获取处理后的数据的场景. 举例:一个用于累加数组内数据的和的线程. public class AdditionThread extends Thread { private int sum = 0; private int[] nums; ​ public AdditionThread(int[] nums, String threadName) { super(threadName); this.nums = nums; } ​

  • 详解Java创建多线程的四种方式以及优缺点

    java有以下四种创建多线程的方式 1:继承Thread类创建线程 2:实现Runnable接口创建线程 3:使用Callable和FutureTask创建线程 4:使用线程池,例如用Executor框架创建线程 DEMO代码 package thread; import java.util.concurrent.*; public class ThreadTest { public static void main(String[] args) throws ExecutionExceptio

  • Java解析XML的四种方式

    xml文件 <?xml version="1.0" encoding="utf-8" ?> <class> <student> <firstname>cxx1</firstname> <lastname>Bob1</lastname> <nickname>stars1</nickname> <marks>85</marks> </

  • 分享Java多线程实现的四种方式

    目录 以下四种方式: 1.继承Thread类,重写run方法 2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target 3.通过Callable和FutureTask创建线程 4.通过线程池创建线程 后面两种可以归结成一类:有返回值,通过Callable接口,就要实现call方法,这个方法的返回值是Object,所以返回的结果可以放在Object对象中. 第一种:继承Thread类,重写该类的run()方法. class My

  • Java创建数组的几种方式总结

    1.一维数组的声明方式: type[] arrayName; 或 type arrayName[]; 附:推荐使用第一种格式,因为第一种格式具有更好的可读性,表示type[]是一种引用类型(数组)而不是type类型.建议不要使用第二种方式 下面是典型的声明数组的方式: // 声明整型数组 int[] intArray0 ; int intArray1 []; // 声明浮点型数组 float floatArray0 []; float[] floatArray1 ; // 声明布尔型数组 boo

  • Java创建多线程的几种方式实现

    1.继承Thread类,重写run()方法 //方式1 package cn.itcats.thread.Test1; public class Demo1 extends Thread{ //重写的是父类Thread的run() public void run() { System.out.println(getName()+"is running..."); } public static void main(String[] args) { Demo1 demo1 = new D

  • Java下载文件的四种方式详细代码

    1.以流的方式下载 public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径. File file = new File(path); // 取得文件名. String filename = file.getName(); // 取得文件的后缀名. String ext = filename.substring(filename.lastInd

  • 关于Java创建线程的2种方式以及对比

    目录 1. 继承Thread类 2. 实现Runnable接口: 创建线程的两种方式对比: 线程的完整生命周期: 总结 Java中两种创建线程的方式: 1. 继承Thread类 重写run()方法 new一个线程对象 调用对象的start()启动线程 class Handler extends Thread{ public void run(){ //重写run()方法 } public static void main(String[] args){ Thread thread=new Han

  • java 创建线程的几种方式

    说道线程,肯定会想到使用 java.lang.Thread.java这个类 那么创建线程也主要有2种方式 第一种方式: public class MyThread extends Thread { public void run() { System.out.println("这是MyThread线程"); } } 然后在调用处,执行start方法即可: MyThread myThread = new MyThread(); myThread.start(); 第二种方式实现Runna

随机推荐