作者adrianshum (Alien)
看板java
标题Re: [问题] 乱数
时间Tue Jul 29 17:37:15 2008
※ 引述《necole236 (necole236)》之铭言:
: http://java.sun.com/j2se/1.4.2/docs/api/java/util/Random.html#Random()
: Random
: public Random()
: Creates a new random number generator. Its seed is initialized to a value
: based on the current time:
: public Random() { this(System.currentTimeMillis()); }
: Two Random objects created within the same millisecond will have the same
: sequence of random numbers.
: 我看到的定义是这样子写的
: 他并没有说除了当前时间之外,还做了什麽「会设一个和其他 invocation
: 很可能会不同的值作 seed」
: 假设你是对的,那他是如何设定一个不同的值做 seed ?
我那段是在 JDK5 的 API 找出来的.
看来 Sun 在 JDK5 改变了 Random no-op constructor .
JDK5 里的 Random():
public Random() { this(++seedUniquifier + System.nanoTime()); }
alien
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.155.236.82
1F:推 necole236:请问 seedUniquifier 的值到底是多少呢? 07/29 17:58
2F:推 necole236:seedUniquifier = 8682522807148012L; 是从何而来 @_@ 07/29 18:00
3F:→ adrianshum:不懂你在问什麽, 什麽叫从何而来? 07/29 18:07
4F:推 necole236:是谁定义 seedUniquifier 就是这个数值的 07/29 18:08
5F:→ necole236:这是google到的,为什麽这个数字这麽特别? 07/29 18:10
6F:→ adrianshum:Sun 的 developer 设的. 至於为什麽要取这数就得问他了 07/29 18:11
7F:→ adrianshum:可是理论上用什麽数值也没有太大关系吧 07/29 18:13
8F:推 necole236:当然有关系, google true random 就知道了 07/29 18:25
9F:→ adrianshum:没有关系. 重点是取seed的logic,单是那个seedUniquifer 07/29 19:42
10F:→ adrianshum:的起始值不同,对 true random 与否一点关系都没有 07/29 19:44
11F:推 sunneo:电脑上的random都是pseudo random吧? 07/29 22:07
12F:→ adrianshum:其实是的... 不过有些人还蛮介怀能不能预测seed 吧 07/30 12:06