Pseudo-Random-Generator

mrg32k3a的內部狀態大小和輸出範圍是多少?

  • November 19, 2018

這是 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 $ -少量。

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