2015-01-20 81 views
0

是否有產生「無限」數量的高熵數據的函數?此外,存在哪些函數會一次又一次地產生相同的隨機數據?高熵隨機數據創建功能?

我知道他們存在,但他們有一個特定的名字?

使用案例:

  • 使用函數來生成隨機數據的100個比特。 (太棒了!)但是保持熵的高值。
  • 使用相同的函數來產生10000位的隨機數據。 (生成的前100位與之前生成的隨機數據的100位相同)。雖然仍然保持熵的高值

此外,我將如何去建立自己的這些功能?

+2

沒有確定性函數可以產生比輸入更多的熵。 – CodesInChaos 2015-01-20 23:58:22

+1

但也許你想要的是一個流媒體。鑑於熵的150位熵,他們可以輸出實際上無限量的數據,這與真正的隨機數據在計算上無法區分。 – CodesInChaos 2015-01-21 00:01:11

回答

1

你很可能在尋找Pseudo-Random Number Generators

  • 它們由一個種子初始化,從而獲得有限量的熵。
  • 好生成器有一個不錯的熵出來,假設你只從它的輸出中判斷它(因此你忽略種子和/或生成數字的算法,否則熵顯然爲0)。

    大多數PRNG算法產生的序列通過任何幾個測試均勻分佈。這是一個開放的問題,也是密碼學理論和實踐的核心之一,是否有任何方法可以將高質量PRNG的輸出與真正的隨機序列區分開來,而不必知道所使用的算法和使用的算法它已初始化。

  • 所有PRNG都有一個週期,在此期間生成的序列將重新啓動。

    PRNG的週期是這樣定義的:對於序列的無重複前綴的長度,在所有起始狀態上的最大值。這個時期受到國家數量的限制,通常以比特爲單位。然而,由於時間長度可能會加上每個「狀態」位的兩倍,所以很容易構建具有足夠長的時間段的PRNG以用於許多實際應用。

因此,具有不同長度的兩個序列,其中一個是另一個的前綴,你只需要使用相同的種子運行PRNG兩次。

自己構建它們會非常棘手,但一個相當不錯的和簡單的是Mersenne Twister,它可以追溯到1998年,並在a paper by Matsumoto and Nishimura [1]中定義。

一個簡單的例子是linear congruential generator

[1] Matsumoto,M .; Nishimura,T。(1998)。 「Mersenne twister:623維等分佈的均勻僞隨機數發生器」。 ACM Transactions on Modeling and Computer Simulation 8(1):3-30。 doi:10.1145/272991.272995

+0

這正是我正在尋找的。雖然我不關心僞隨機數字生成器的密碼特性 - 具有可重現的「高熵」數據函數完全符合我的要求。時間改變世界! – 2015-01-21 01:19:54