java真随机数_Java的随机数生成方式

列举两种常用的:

第一种:new Random(),nextInt(10),范围是1~10,以括号里面的值限制范围。

1 public classTest {2 public static voidmain(String[] args) {3 Random random = new Random(3);4 int ranNum = random.nextInt(10);5 System.out.println(ranNum);6 }7 }

random里其实是一个数列,这个数列每一位的数字接近随机分布,可以从数学上证明,但是一个数列一定是确定的,也就是第一个是什么数,第二个什么数都是固定的,就像1,2,3,4.。。。但是可以通过一个种子选取数列的起始位置,例如,上面的数列从3开始,就是3,4,。。。这就使每次的随机数都不相同。而这个种子一般使用程序运行时对应时间的秒(从某一年开始总的秒数),每次的随机数就不同了,产生可以使用的伪随机数。

即种子用于随机数生成器初始化值,随机生成器对于特定的种子值总是产生相同的随机数序列。

一般Random random = new Random();系统采取当前时间毫秒数做种子数做到随机不然的话写了种子数随机数就是定值了。

而random.nextInt(10)这个方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。

再举个列子:

public classTest {public static voidmain(String[] args) {

Random random= new Random(9);int ranNum = random.nextInt(10);

System.out.println(ranNum);

}

}

得到的结果只能是:9

第二种:Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值。例如:double a=Math.random()*(3-1)+1,设置一个随机1到3的变量。

(Math.random()*max-min)+min,用法如下:

1 public classTest {2 public static voidmain(String[] args) {3 double ranNum = (Math.random()*100-1)+1;4 System.out.println(ranNum);5 System.out.println("强转后:"+(int)ranNum);6 }7 }

结果如下图:

048064cee3b488f5f338b6492d1d6ff0.png

得到是一个double类型的数值,将它强转为int类型的就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值