
java.util.Random是Java中的一个类,可以生成随机数,并且可以通过传入相关参数来控制随机数的范围,无论是在实际开发中还是在学习生活中,随机随机数都可以发挥相对大作用. 所以今天,让我们学习如何使用Random!
我相信您一定赢得了大奖!因此,作为一名程序员,您是否曾经想过抽奖活动的大转盘,或者如何实现九宫格?如何控制中奖的可能性?按照我的步骤,我将向您展示Random的魅力!
从源代码中可以看出,Random类具有两种构造方法,一种没有参数,另一种具有长型参数(称为: seed),那么这两种有什么区别?
没有参数: 完全随机
带参数: 具有输入参数()的随机对象生成的随机数是固定的

对于栗子,当实例化两个Random对象时,如果参数()以10传递,则由这两个Random(random1和random2)对象生成的随机数,第一个由random1生成的随机数=由random2生成的第一个随机数,由random1生成的第二个随机数= random2生成的第二个随机数随机数生成原理,代码如下:
//实例化Random对象
Random random = new Random();
Random random2 = new Random();
Random random3 = new Random(10);
Random random4 = new Random(10);
for (int i = 0; i < 10; i++) {
int number=random.nextInt();
int number2=random2.nextInt();
int number3=random3.nextInt();
int number4=random4.nextInt();
//输出格式是: 无随机数 无随机数 有随机数 有随机数
System.out.println(number+"_"+number2+"___"+number3+"_"+number4);
}
输出结果:
1075217332 -2135067742-1157793070 -1157793070
-944171219 -8378859421913984760 1913984760

1314450533 14130881851107254586 1107254586
215653709 -3376126871773446580 1773446580
1737734575 1766714434254270492 254270492
从五组数字的输出中可以清楚地发现,由无核随机数生成的随机数是完全随机的(没有任何连接),并且由两个随机对象生成的随机数传递给了是相同的,并且得出结论随机数生成原理,由随机对象传递到中生成的随机数是固定的
注意: 不会影响随机数的范围

Random的几种常见方法相对简单. 这只是最常用的三个.
这里是一种获取多种类型的int数据的方法: 默认范围[int最小值,int最大值],0〜最大范围[0,max),自定义范围[min,max),自定义范围[min, max],当然,这里仅展示一些最常用的,还有许多其他类型,可以通过不同的公开声明进行更改
//生成默认范围(int类型的范围)的随机数
int i = random.nextInt();//[int最小值,int最大值)
//生成自定义 0~最大范围(max)的正整数随机数 [0,max)
int i = random.nextInt(max);//[0,10)
//生成自定义范围随机数 [min , max)
//公式: .nextInt(max) % (max - min) + min
int i=random.nextInt(10)%(10-5)+5;//[5,10)
//生成自定义范围随机数 [min , max]
//公式: .nextInt(max) % (max - min + 1) + min
int i = random.nextInt(10) % (10 - 5 + 1) + 5;//[5,10]
这很容易理解,它是以相同的概率直接生成是非题
boolean b = random.nextBoolean();

nextDouble()生成的随机数范围是[0,1.0)的十进制数
double d = random.nextDouble();
随机数在许多地方使用. 我个人最常用的是抽奖方式. 想要控制各种奖励概率的彩票程序. 使用随机数更合适!
获胜概率控制的原理: 通过获得一个随机数,然后使用if语句首先定义获胜间隔,您可以达到公平的概率效果!
//首先在 [1,100] 区间(100个数)随机获取一个数
int i = random.nextInt(100) % (100 - 1 + 1) + 1;
System.out.println("当前获取的随机数:" + i);
//然后根据中间概率来设置 if 条件语句的区间,达到效果
if (i >= 80) {// [80,100] 一等奖
System.out.println("恭喜,一等奖!");
} else if (i >= 50) { // [50,80] 二等奖
System.out.println("恭喜,二等奖!");
} else {//[1,50] 谢谢惠顾
System.out.println("很遗憾,没有中奖!");
}
//首先在 [1,6] 区间(6个数)随机获取一个数
int i = random.nextInt(6) % (6 - 1 + 1) + 1;
System.out.println("骰子点数:" + i);
的正面和背面也是如此. 随机数范围和中奖概率可以根据实际需要进行调整!
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-254487-1.html
有些不属于这个年龄的成熟
200万搞定