Random-Number-Generator

使用生成的 PRN 重新播種 PRNG

  • November 2, 2019

使用上一代的 PRN 重新播種 PRNG 是否會對生成數字的質量產生任何影響;如果是這樣,這是否取決於使用的​​ PRNG,或者效果是否普遍適用於任何算法?

也許我會用一些虛擬碼來增強這個問題:

firstSeed := get_seed_from_entropy_pool()
seed(firstSeed)
firstPrn := rand()
seed(firstPrn)
nextPrn := rand()

已經是nextPrn劣質了?如果重複,質量會下降嗎?

在大多數 PRNG 中,這會導致徹底的災難,特別是當生成器的狀態大於作為偽隨機返回的結果(呼叫 rand())時。

如果您使用Mersenne Twister並保證其大周期並應用您公開的構造,因為它返回 32 位整數,最終您將獲得一個重複的值,該值用於先前播種,因此它變成一個循環。你會得到一個關於 $ 2^{16} $ 根據生日機率重複偽隨機序列,而不是保證生成器的周期長度。如果它的播種是確定性的,並且保證給定的種子總是生成相同的偽隨機序列,則同樣的問題適用於所有其他生成器。

另一方面,如果您先執行自動播種的一些步驟,然後再使用 PRNG 而不播種,那麼它不應該影響其屬性。

引用自:https://crypto.stackexchange.com/questions/14877