Ruby 1.9.2 中的Random
类保证以相同的顺序生成随机数,给定特定的种子和范围。例如:
r = Random.new(23)
r.rand(100) # 83
r.rand(100) # 40
但是假设我想在另一台计算机上生成序列中的下一个数字(而不重新生成序列中的早期数字)。鉴于先前的输出,这应该是可能的。有没有办法在Random
课堂上做到这一点?还是我必须编写自己的Mersenne twister实现?
[编辑:正如下面评论中所指出的,实际上不可能Random
仅从输出中确定实例的状态,因为只有部分状态(特别是低 32 位)用于输出。]