【发布时间】:2019-01-13 21:25:58
【问题描述】:
我正在寻找具有以下属性的伪随机数生成器:
- 不重复:返回的数字必须是唯一的,直到从
0到n的所有数字都返回一次,然后才能重复每个数字一次,等等。 - 确定性:如果我两次使用相同的种子,它需要产生相同的序列。
- 很少分配:它不应该需要分配大的内存区域来混合其数据,就像序列排列那样。
我的目标是我可以用一些种子值初始化随机数生成器,然后不断调用它的函数来生成序列中的下一个数字,可能会将前一个数字传递给它。
【问题讨论】:
-
你看过these吗?
-
linear feedback shift register 可能对您有用。它肯定是不重复的,并且只需要很少的存储空间。另见xorshift。
-
n的值是多少? -
@SeverinPappadeux
n通常介于10和1000之间 -
好吧,
n非常小,正确的答案应该是 Fisher-Yates-Knuth 洗牌。最多几千字节