真隨機數發生器(True random number generator) - CoderBridge

文章推薦指數: 80 %
投票人數:10人

問題敘述. 真隨機數發生器(True random number generator). 抱歉,這不是一個“真實”的問題,但是有一段時間我記得在這裡看到過一篇有關隨機化隨機化器以生成真正的隨機數 ... 問題討論真隨機數發生器(Truerandomnumbergenerator)問題討論question真隨機數發生器(Truerandomnumbergenerator)問題敘述真隨機數發生器(Truerandomnumbergenerator)抱歉,這不是一個“真實”的問題,但是有一段時間我記得在這裡看到過一篇有關隨機化隨機化器以生成真正的隨機數,而不僅僅是偽隨機數的文章。

如果我搜索它,我看不到。

有人知道那篇文章嗎?參考解法方法1:我不得不不同意這個問題的很多答案。

可以在計算機上收集隨機數據。

SSL,SSH和VPN不能保證安全。

軟件隨機數生成器的工作方式是存在一個從許多不同位置收集的隨機數據池,例如時鐘漂移,中斷定時等。

這些方案的訣竅在於正確估計熵(隨機性的時髦名稱)。

只要您正確估計熵,來源是否為偏差都無關緊要。

為了說明這一點,我在此註釋中擊中字母e的機會比z的機會高得多,因此,如果我將鍵中斷用作熵的來源,則可能會產生偏差-但仍然存在一些隨機性在該輸入中。

您無法確切預測本段中接下來的字母順序。

您可以從這種不確定性中提取熵,並將其用作隨機字節的一部分。

高質量的真實隨機數發生器,例如Yarrow具有內置的相當複雜的熵估計,並且僅會發射它可以在其“隨機池”中可靠地確定的字節數。

方法2:我相信那是thedailywtf.com-即不是您想做的事。

無論調用多少次randomize(),都不可能從偽隨機數中獲得真正的隨機數。

您可以從特殊位置獲得“真實”隨機數硬件。

您還可以從鼠標移動和類似的東西收集熵。

方法3:在文章的結尾,我將回答您的問題,為什麼您可能要使用多個隨機數生成器來“提高隨機性”。

關於隨機性的含義存在哲學爭論。

在這裡,我的意思是“在各個方面都與所抽取的樣本在均勻(0,1)iid分佈上沒有區別”,我完全忽略了關於什麼是隨機數的哲學問題。

Knuth第2捲進行了分析,其中他嘗試按照您的建議創建隨機數生成器,然後分析其失敗的原因以及真正的隨機過程是什麼。

第2卷詳細研究了RNG。

其他人則建議您使用隨機物理過程來生成隨機數。

但是,正如我們在Espo/vt互動中看到的那樣,這些過程可能具有微妙的周期性元素和其他非隨機元素,部分原因是具有確定性行為的外部因素。

通常,最好永遠不要假設隨機性,而要進行隨機性測試,並且只要知道了這些偽影,通常就可以對其進行校正。

可以創建確定性完全隨機的“無限”比特流。

不幸的是,這樣的方法隨著要求的位數而在內存中增長(因為它們必須這樣做,以避免重複循環),因此它們的範圍受到限制。

實際上,使用具有已知屬性的偽隨機數生成器幾乎總是更好。

要尋找的關鍵數字是相空間維數(大約可以均勻分佈的樣本之間的偏移量)和位寬(每個樣本中彼此均勻地隨機分佈的位數)),以及循環大小(分佈開始重複之前可以採集的樣本數)。

但是,由於來自給定生成器的隨機數確定性地處於已知序列中,因此可能有人在搜索生成器並找到對齊序列的情況下暴露了您的過程。

因此,如果您維護兩個生成器,則有可能避免您的分佈被立即識別為來自特定的隨機數生成器。

首先,對i進行採樣,然後將其均勻地映射到一個到n,其中n最多是相位維。

然後,在第二秒中採樣i次,並返回第i個結果。

在最壞的情況下,這會將循環大小減小為(原始循環大小/n),但是對於該循環,仍將生成統一的隨機數,並且這樣做的方式使得在n中搜索比對指數。

它還將減少獨立相的長度。

除非您了解縮短週期和獨立相位長度對您的應用意味著什麼,否則請不要使用此方法。

(bygoldenmean、SimonJohnson、Blorgbeard、Johnwithwaffle)參考文件Truerandomnumbergenerator(CCBY-SA3.0/4.0)#algorithm#random#prng#language-agnosticComments提交送出編輯提交送出編輯提交送出回覆提交送出問題討論歡迎回家×使用Github帳號登入使用Google帳號登入取消免費加入CoderBridge×使用Github帳號註冊使用Google帳號註冊取消



請為這篇文章評分?