Java Random类的使用

常见用法:

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.01.0 之间均匀分布的  float 值。

g、 public long nextLong():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。

h、public double nextGaussian():返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0,标准差是 1.0。

1.产生int类型范围内 -2147483648~2147483647 的随机整数

Random random=new Random();
int a=random.nextInt();
System.out.println(a);

2.产生[0,n)区间的随机数,包含0但不包含n。

Random random=new Random();
int a=random.nextInt(10);  //产生0到10之间的随机整数
System.out.println(a);

3.产生(0,1)范围的随机小数

Random random=new Random();
double a=random.nextDouble();  //产生0到1之间的随机小数,默认double精度
BigDecimal bg = new BigDecimal(a);
double b = bg.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();//精确到小数点后一位
System.out.println(b);

4.seed 种子的使用

注意:相同种子输出的结果相同,不同种子输出结果不同

(1)相同种子

Random random1 = new Random(100);
System.out.println(random1.nextInt());
System.out.println(random1.nextFloat());
System.out.println(random1.nextBoolean());
Random random2 = new Random(100);
System.out.println(random2.nextInt());
System.out.println(random2.nextFloat());
System.out.println(random2.nextBoolean());

运行结果相同:.

-1193959466
0.7346627
false

-1193959466
0.7346627
false

 (2)不同种子

Random random1 = new Random(System.currentTimeMillis());
System.out.println(random1.nextInt());
System.out.println(random1.nextFloat());
System.out.println(random1.nextBoolean());
System.out.println();
Random random2 = new Random(System.currentTimeMillis());
System.out.println(random2.nextInt());
System.out.println(random2.nextFloat());
System.out.println(random2.nextBoolean());

 运行结果不同:

-1674565819
0.2528978
false

-1664947096
0.5270924
true

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值