Pseudo-Random-Generator
mrg32k3a的內部狀態大小和輸出範圍是多少?
這是 Pierre L’Ecuyer 的 PRNG。 我知道它的周期是 $ 2^{191} $ ,但我不知道它的內部狀態大小是多少。它是什麼?
答案基於您連結中給定的周期構造。
您必須儲存兩個模數
- $ m_1 = 2^{32} − 209 = 4294967087 $ 和
- $ m_2 = 2^{32} − 22853 = 4294944443, $
內部狀態是;
- $ s_{1,n} = {x_{1,n},x_{1,n+1}, x_{1,n+1} } $ 和
- $ s_{2,n} = {x_{2,n},x_{2,n+1}, x_{2,n+1} } $ .
這 $ z_n = (x_{1,n}- x_{2,n}) \bmod m_1 $ , 隨之演變 $ x_{1,n} $ 和 $ x_{2,n} $ 其中每個 requrrence 關係為 $ x_{1,n} $ 和 $ x_{2,n} $ 被取模組 $ m_1 $ 和 $ m_2 $ , 分別;
$$ x_{1,n} = (1403580 \times x_{1,n-2} - 810728 \times x_{1,n-3} ) \bmod m_1, $$ $$ x_{2,n} = (527612 \times x_{2,n-2} -1370589 \times x_{2,n-3} ) \bmod m_2 $$
因此,您需要儲存 3 個模數 $ m_1 $ 和 3 個模數 $ m_2 $ 內部狀態。
這 $ m_1 $ 和 $ m_2 $ 非常接近 $ 2^{32} $ ,所以我們可以說你需要;
- 6 個無符號 32 位整數,用於內部狀態。
- 對於模數,您還需要 2 個無符號 32 位整數。
範圍是 $ m_1 $ 自從 $ z_n $ 被採取 $ \mod m_1 $ .
是的;出於所有實際目的的狀態是 $ 8 \cdot 32=256 $ -少量。