Random r = new Ranmom(47)

来源:互联网 发布:有招聘淘宝主播的吗 编辑:程序博客网 时间:2024/05/02 00:05
new Random(47);
相当于
Random rnd = new Random();
rnd.setSeed(47);

一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数。

setSeed 的方法介绍:
使用单个 long 种子设置此随机数生成器的种子。
setSeed 的常规协定是它更改此随机数生成器对象的状态,使其状态好像是刚刚使用参数 seed 作为种子创建它的状态一样。
通过将种子自动更新为 (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1)并清除nextGaussian()使用的haveNextNextGaussian 标志,Random 类可实现 setSeed 方法。 
Random 类实现的 setSeed 恰好只使用 48 位的给定种子。
但是,通常重写方法可能使用 long 参数的所有 64 位作为种子值。


随机数种子就是产生随机数的第一次使用值, 机制是通过一个比较复杂的函数,将这个种子的值转化为随机数空间中的某一个点上,并且产生的随机数均匀的散布在空间中。 以后产生的随机数都与前一个随机数有关。

由此看来,对于一些由数学封装好的方法,没必要深究,不过有兴趣的话另说。

47作为随机种子用,为的就是产生随机数。
而为了每次取得随机数不同,随机种子必须也要不同才行。

如果用构造一个指定种子的Random,则如果所指定的种子相同(本例为47),
且调用的方法相同,则产生的随机数也相同。

0 0
原创粉丝点击