可搜索的随机数发生器

问题描述 投票:0回答:1

是否有任何可以寻找的确切随机发生器(例如,第1000个数字总是X,具有O(1)存储和性能)?

var x = new RNG(99); // seed
var y = x.at(10004); // always return same value, eg. 0.34

什么是算法或函数/公式名称?任何语言都没问题。

random
1个回答
1
投票

我假设您不需要任何PRNG,只要使用种子和索引号确定性地生成数字。 此外,如果没有实际计算,输出数字很难猜测。

HMAC足以满足您的要求。

H(K XOR opad, H(K XOR ipad, text))

K = key(index) text =消息(种子) H =加密哈希函数 ipad =用H填充的0x36块字节长度的字节 opad =用H填充的0x5C块字节长度的字节

或许你甚至可以做到

H(seed,index) //like Sha256(seed + index)

使用mod调整输出范围

© www.soinside.com 2019 - 2024. All rights reserved.