拭心 于 2016-10-30 10:58:51 发布 16358 收藏 12版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 Random 通常用来作为随机数生成器,它有两个构造方法:
1.不含参构造方法:
2.含参构造方法:
都调用的 setSeed 方法:
可以看到,不含参构造方法每次都使用当前时间作为种子,而含参构造方法是以一个固定值作为种子什么是种子 seed 呢?seed 是 Random 生成随机数时使用的参数: Random 中最重要的就是 next(int) 方法,使用 seed 进行计算:
其他 nextXXX 方法都是调用的 next()。 比如 nextInt(int):
再比如 nextBoolean():
举个栗子:
分别用含参构造方法和不含参构造方法创建 5 个随机生成器对象,每个随机生成器再生产 8 个随机数,对比下结果: 再运行一次: 总结:通过上述例子可以发现: 随机数是种子经过计算生成的。
转载请注明出处——https://blog.csdn.net/chy555chy 一、概述
创建一个新的随机数生成器。该构造函数设置随机数种子的方式非常不同于其他的构造函数。 (2)java.util.Random.Random(long seed)
使用一个随机数种子,创建一个新的随机数生成器。该种子是由next函数维护的伪随机数生成器的内部状态的初始值。 (3)int java.util.Random.nextInt(int bound)
返回一个从随机数生成序列提取的均匀分布在0(包括)和bound指定的值(不包括)的伪随机数。nextInt函数约定了在指定范围内的一个整数被伪随机的产生并返回。所有区域范围内的值都有一个(大致)相同的生成概率。 二、代码实战
三、运行截图(这里我运行了3次) 从运行结果可以看出当“随机数种子”相同的时候,每次调用该函数产生的结果都一样,所以在实际运行环境中,我们应该避免使用相同的随机数种子,常用的方法就是使用System.nanoTime来为作为种子。 |