结合PRNG和'true'随机,快速和(可能)愚蠢的方式

时间:2018-08-24 07:45:16

标签: algorithm random

采用xoroshiro或xorshift之类的快速PRNG以及/ dev / random之类的基于“真”熵的生成器。

使用“ true”随机数对PRNG进行种子,但也要从“ true”随机数中获得一个数字,并将其用于对PRNG的所有结果进行XOR运算以产生最终输出。

然后,暂时替换此数字(例如,在生成10000个随机数之后)。

这也许很幼稚,但是我希望这可以改善PRNG的某些方面,例如周期大小,而对速度的影响可以忽略不计。我怎么了?

我在这里担心的是生成UUID(快速),它基本上是128位数字,应该是“真正唯一的”。我担心的是,使用像xorshift家族这样的现代PRGN,周期接近“仅” 2 ^ 128,熵种子PRNG生成器发生碰撞的机会并不像真正的随机数那样微不足道。

1 个答案:

答案 0 :(得分:1)

与普通PRNG相比,改进仅是次要的。例如,可以通过对连续结果进行异或运算来消除用于掩盖结果的单个真实随机数。该值将与连续的纯PRNG编号的XOR值相同。因此,如果您可以预测PRNG,则对改进后的序列进行相同的操作并不难。