有2个Random类的构造函数
public Random()public Random(long seed)根据oracle的第二个构造函数的描述如下
使用单个长种子创建新的随机数生成器.种子是伪随机数生成器的内部状态的初始值,它由方法next(int)维护.
我完全不明白.我没有找到任何物品/书里面清楚地解释了为什么,何时以及如何使用它.
有人可以解释一下吗?
伪随机数生成器通过基于先前生成的数重复生成新数来工作.这意味着如果你总是拥有相同的第一个 "随机"数字,并且你使用相同的伪随机数生成器来生成第二个,那么你将始终拥有相同的第二个 "随机"数字.
第一个Random构造函数使用非确定种子(序列中的第一个数字)构造伪随机数生成器,因此您几乎总是会得到不同的"随机"数字序列.第二个Random构造函数用你想要的任何种子构造一个伪随机数生成器,所以如果给它相同的种子,你将总是得到相同的序列.
这是一个例子.如果您创建Random这样的:
Random yourRandom = new Random();
Run Code Online (Sandbox Code Playgroud)
它将从一些种子开始.那种子可能是42,121,3810,无论如何.您永远无法确定何时创建它.它生成的所有随机数都是基于该种子的,所以因为它几乎总是使用不同的种子,所以你几乎总会得到不同的"随机"数字.
另一方面,如果您创建Random这样的代码:
Random yourOtherRandom = new Random(36);
Run Code Online (Sandbox Code Playgroud)
所有yourOtherRandom生成的数字都将从36开始计算.由于第一个数字(36)是相同的,第二个数字是从第一个数字计算的,等等,yourOtherRandom每次运行程序时生成的所有内容都是相同的.
| 归档时间: |
|
| 查看次数: |
372 次 |
| 最近记录: |