本文最后更新于:1 年前

5种生成随机数的简单方法

和一篇大佬的文章👇

方法①

🔺 通过java.Math包的random方法得到1-10的int随机数

🔺 公式:

最小值—最大值(整数)的随机数

(类型) 最小值+Math.random()*最大值

import java.util.Random;

public class RandomDemo {

	public static void main(String[] args) {
		for (int i=0;i<5;i++)
		{
			System.out.println((int)(1+Math.random()*10));
			int k;
			k=(int)(1+Math.random()*10);
		}
	}
}

方法②

🔺借助java.util.Random类来产生一个随机数发生器,也是最常用的一种,构造函数有两个,Random()和Random(long seed)。第一个就是以当前时间为默认种子,第二个是以指定的种子值进行。产生之后,借助不同的语句产生不同类型的数。

🔺种子就是产生随机数的第一次使用值,机制是通过一个函数,将这个种子的值转化为随机数空间中的某一个点上,并且产生的随机数均匀的散布在空间中。以后产生的随机数都与前一个随机数有关

import java.util.Random;

public class RandomDemo {

	public static void main(String[] args)
	{    
		Random r = new Random();
		for(int i=0 ; i<5 ;  i++)
		{
			int ran1 = r.nextInt(100);//种子:100
			System.out.println(ran1);
		}
	}

}

注:类似的方法可参考 利用Random类来产生5个20~50之间的随机整数

方法③

  1. 生成随机数需要使用到Java工具类中的Random类。

  2. 要求是随机x到y之间的整数,即指定范围,则使用Random类中的nextInt(int n)方法。

  3. 该方法生成从0(包括)到n(不包括)之间的随机整数,是一个伪随机数,并不是真正的随机数。

  4. 若x不为0,则需要在随机结果后加上x。参数n的值也需要加上1后减去x。最后结果才符合要求的范围。

import java.util.Random;

public class RandomDemo {

	public static final int START = 50;	//定义范围开始数字
	public static final int END = 99;	//定义范围结束数字
	
	public static void main(String[] args) {  
      //创建Random类对象
      Random random = new Random();              
      //产生随机数
      int number = random.nextInt(END - START + 1) + START;
      //打印随机数
      System.out.println("产生一个"+START+"到"+END+"之间的随机整数:"+number);
	}

}

注:更多方法可参考【Java工具类】—-产生随机数

方法④

🔺 返回的数值是 [ 0.0 , 1.0 ) 的double型数值,由于double类数的精度很高,可以在一定程度下看做随机数,借助(int)来进行类型转换就可以得到整数随机数了

public static void main(String[] args)
{    
	for (int i = 1; i <= 10; i++) {
    	int max=99,min=10;//生成两位随机正整数
		int ran2 = (int) (Math.random()*(max-min)+min); 
    	System.out.println(ran2);
	}
}

方法⑤

🔺 返回从1970年1月1日0时0分0秒(这与OS有关)到现在的一个long型的毫秒数,取模之后即可得到所需范围内的随机数

public static void main(String[] args)
    {    
        int max=100,min=1;
        long randomNum = System.currentTimeMillis();  
        int ran3 = (int) (randomNum%(max-min)+min);  
        System.out.println(ran3);
        
    }

大佬的文章

这个大佬【peabits】的文章贼详细,可以好好琢磨琢磨 👇


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

Java—打印字母表 上一篇
Java中的<<、>>和>>> 下一篇

 目录