本文最后更新于: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之间的随机整数
方法③
生成随机数需要使用到Java工具类中的Random类。
要求是随机x到y之间的整数,即指定范围,则使用Random类中的nextInt(int n)方法。
该方法生成从0(包括)到n(不包括)之间的随机整数,是一个伪随机数,并不是真正的随机数。
若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 协议 ,转载请注明出处!