是否可以找到精确的随机生成器(例如,第10004个数字始终为X,具有O(1)的存储和性能)?
var x = new RNG(99); // seed
var y = x.at(10004); // always return same value, eg. 0.34
算法或函数/公式的名称是什么?任何语言都可以。
答案 0 :(得分:1)
我假设您不需要任何PRNG,只要使用种子和索引号确定性地生成数字即可。
另外,如果不进行实际计算,很难猜测输出数字。
HMAC足以满足您的要求。
H(K XOR opad, H(K XOR ipad, text))
K
=键(索引)
text
=消息(种子)
H
=加密哈希函数
ipad
= H
的块字节长度的字节,其中0x36
opad
= H
的块字节长度的字节,其中0x5C
或者您甚至可以做
H(seed,index) //like Sha256(seed + index)
使用mod调整输出范围