中間廣場 PRNG 有什麼問題?
根據文章:
https://www.pcg-random.org/posts/too-big-to-fail.html
當中間正方形的 N 為 $ 2^{128} $ 我們可以期望生產 $ 2^{64.3} $ 在我們開始在生成器中看到重複之前的數字。這對於 320 EB 的隨機數據來說已經足夠了,遠遠超過任何 PractRand 測試所消耗的數據。
這足以到達循環和循環本身的路徑大小。它通過了隨機性測試,並且可能非常快。那麼,足夠大的中間廣場有什麼問題嗎?特別是如果我們不抱怨 256 位數學的速度和要求。
Mellisa O’Neil 寫道,如果生成器是隨機映射,則存在一些不良狀態和短週期的風險。但在這種情況下,這個機率是多少?看起來很小,反正我也證明不了。
聲明“我們期望生產 $ 2^{64.3} $ 在我們開始重複之前的數字”只有當我們相信 128 位中間正方形表現得像一個隨機映射 $ {0,1}^{128} $ . 但是,我們可以證明它具有隨機映射極不可能的屬性。
回想一下,128 位中間方保持 128 位狀態 $ S_t $ . 通過平方有效地進行更新 $ S_t $ , 並將位 64-191 作為新的 $ S_{t+1} $ IE $$ S_{t+1}=(S_t^2>>64)%2^{128}. $$
國家 $ S_t=0 $ 表示一個固定點。儘管隨機映射具有大致機率的固定點 $ (1-1/e) $ ,這是一個不尋常的,因為它有大量的原像。任何數字 $ S<2^{32} $ 將映射到 0 任何數字 $ S $ 可被 $ 2^{96} $ . 僅這些原像(可能還有其他)總計 $ 2^{33} $ 對於大型隨機地圖,我們期望原像的數量分佈為 Poisson(1)。此外,如果我們考慮前輩,任何數字 $ S<2^{64} $ 將映射到一個較小的數字和小於 $ 2^{63} $ 將在不到 6 步內達到 0。同樣對於可被整除的數字 $ 2^{65} $ . 這至少給出了 $ 2^{64} $ 當隨機地圖期望時,前任狀態為 0 $ 2^{64}\sqrt{\pi/8} $ (與聚結時間大致相同)。當我們考慮我們保證的可能的前身時,前身狀態的數量會增加更多 $ 2^{64} $ 前任狀態,如果這些每個都有 $ 2^{64}\sqrt{\pi/8} $ 前輩我們可能會看到我們的空間的正比例退化到 0 狀態。
還有一個保留的 number 子空間可以被精確整除 $ 2^{64} $ (這個空間大小 $ 2^{63} $ )我們可能期望展示較小空間的隨機映射統計資訊(例如,循環長度為 $ 2^{31.5}\sqrt{\pi/8} $ )。然後我們考慮這個子空間的前輩,並產生與完全隨機映射顯著不同的期望。
總而言之,這些結構是非常不典型的隨機映射,我們應該得出結論,在這種情況下隨機映射不是一個好的模型。