}
结果:
2.Random类中常用的方法
Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的
a、public boolean nextBoolean():
是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。
b、public double nextDouble():
是生成一个随机的double值,数值介于[0,1.0)之间。
c、public int nextInt():
是生成在-2^31到 2^31-1之间int值。如果需要生成指定区间的int值,则需要进行一定的数学变换
d.public int nextInt(int n):
是生成一个介于[0,n)的区间int值,包含0而不包含n。如果想生成指定区间int值,也需要进行一定的数学变换,具体参看下面的使用示例中的代码。
e、public void setSeed(long seed):
是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同。
f、 public float nextFloat(int n):
返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。
g. public long nextLong():
返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。
h. public double nextGaussian():
返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0,标准差是 1.0。
Random r = new Random();
a、生成[0,1.0)区间的小数
double d1 = r.nextDouble();//直接使用nextDouble方法获得。
b、生成[0,5.0)区间的小数
double d2 = r.nextDouble() * 5;//因为扩大5倍即是要求的区间。同理,生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可。
c、生成[1,2.5)区间的小数
double d3 = r.nextDouble() * 1.5 + 1;//生成[1,2.5)区间的随机小数,则只需要首先生成[0,1.5)区间的随机数字,然后将生成的随机数区间加1即可。
同理,生成任意非从0开始的小数区间[d1,d2)范围的随机数字(其中d1不等于0),则只需要首先生成[0,d2-d1)区间的随机数字,然后将生成的随机数字区间加上d1即可。
d、生成任意整数(-231到231-1之间)
int n1 = r.nextInt();//直接使用nextInt方法即可。
e、生成[0,10)区间的整数
int n2 = r.nextInt(10);
n2 = Math.abs(r.nextInt() % 10);
同理,生成任意[0,n)区间的随机整数,都可以使用如下代码:
int n2 = r.nextInt(n);
n2 = Math.abs(r.nextInt() % n);
f、生成[0,10]区间的整数
int n3 = r.nextInt(11);
n3 = Math.abs(r.nextInt() % 11);
相对于整数区间,[0,10]区间和[0,11)区间等价,所以即生成[0,11)区间的整数。
g、生成[-3,15)区间的整数
int n4 = r.nextInt(18) - 3;
n4 = Math.abs(r.nextInt() % 18) - 3;
最后
Int(18) - 3;
n4 = Math.abs(r.nextInt() % 18) - 3;
最后
[外链图片转存中…(img-C3XLLJ9Z-1714305851830)]
[外链图片转存中…(img-OlrbxZFt-1714305851831)]