作者adrianshum (Alien)
看板java
标题Re: [问题] 乱数
时间Tue Jul 29 17:09:18 2008
※ 引述《necole236 (necole236)》之铭言:
: 使用乱数的时候如果不给seed
: 那麽 java 预设值是利用执行当时的时间去当作 seed
: 假设有两个骰子物件,如果他们是同时被初始化,因此有着相同的seed
: 那麽理论上这两个骰子会出现一模一样的乱数序列
: 该怎麽用程式证明这一点呢?
: 还是我的想法有错误呢?
: 因为我做的骰子,没有办法同时初始化 @_@ ?
首先, 如 PsMonkey 大在推文所说, 你两个
Random obj create 的时间肯定会有差距.
你怎样证明你是同时初始化两个 Random Obj?
其次, 根据 API doc, Random() 这个 constructor
只是说会设一个和其他 invocation 很可能会不同的
值作 seed (This constructor sets the seed of
the random number generator to a value very
likely to be distinct from any other invocation
of this constructor), 并没有说只是拿当前时间作 seed.
要是想证明同 seed 会有一样的 random sequence,
为什麽不乾脆自己设一样 seed 就算了?
alien
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.155.236.82
1F:推 necole236:因为书上都是写说用当前时间作seed 07/29 17:10
2F:推 PsMonkey:推最後一句。建议原 po 把两件事情拆开来验证 07/29 17:10
3F:→ necole236:到底乱数seed是什麽,现在出现两种说法了 @_@ 07/29 17:12
4F:→ necole236:同样的seed会有同样的乱数序列,这是乱数的定义之一 07/29 17:13
5F:→ necole236:既然是定义,这还要证明? 07/29 17:15
6F:推 PsMonkey:哪里有两种说法? @__@ 07/29 17:15
7F:→ necole236:一种说法是:当前时间,另一种是你说的,除了当前时间 07/29 17:17
8F:→ necole236:还有不知名的因素「很可能会不同的值」 07/29 17:18
9F:推 godfat:设 seed 和使用 seed 产生乱数是两回事,别搞混了 07/29 17:31