真隨機數發生

2021-09-02 20:37:34 字數 850 閱讀 7980

我們希望建造真隨機數組,有兩種方法一種是採集,一種是自造。

一、採集法建造真隨機數

這需要有產生隨機數的物理環境,例如環境雜訊,宇宙射線計數等等需要專門的裝置在此就不討論了,利用計算機本身的一些隨機事件,也能採集到真隨機數,但是效率太低,不能快速的得到大量的隨機數,所以不適於應用。

二、自造方法

真隨機數並不神秘,只是些分布均勻的亂碼而已。要辦到這些需要現成的隨機源,例如龐大的亂碼庫,優良的隨機函式,優良的隨機函式也是現成的隨機源,有時沒有亂碼庫,使用優良的隨機函式是最實際的選擇,讓隨機性通過定律和運算轉移到我們的陣列中。我們可以通過運算將有規律的資料變成無規律的亂碼,利用熱力學第二定律可知,如果用外部因素對陣列秩序進行干擾,陣列的混亂程度只會增加不會向相反的方向發展。所以我們對分布均勻的有序陣列做隨機排序,最終能夠生成符合要求的隨機數組。我們可以利用隨機函式來實現陣列的隨機排序(這相當於利用多種外部因素改造陣列秩序),這樣建造的隨機數組是不依賴於任何算式的,並且陣列資料之間是沒有任何關係的。要想建造效能優良的真隨機數組,規模是不能太小的,否則無法實現統計學意義上的指標,這樣建造的陣列都是較大的,並且是同時建造,如果讓其乙個乙個的輸出則更像個隨機函式了,可以有其種子,但是沒有週期,並且是可控的,比那些採自物理運動的隨機資料更好控制。實踐證明不止用順序陣列可以建造真隨機數組,我們擷取一段偽隨機數組應用隨機排序也可以建造,同樣規模也不能太小。

澄清乙個概念——真隨機數組

真隨機數都是以陣列形式出現的,真隨機數的定義是:看起來像是亂碼,不可**,不可重複產生的陣列。所以現實中真隨機數組是不存在的,因為存在的陣列都是可以重複的,並且是已知的。

真隨機數只存在於其生成機制中,如果它的生成陣列看上去是亂碼,你不能**其下乙個數值,並且整體上不重複,那它就是個真隨機數發生器。

linux下的真隨機數發生器 產生真隨機數

在翻閱linux核心方面的書時發現了乙個獲取真隨機數的方法。linux核心將機器的物理硬體產生的雜訊等 例如發生的鍵盤敲擊,中斷次數,頻率,溫度等等 放入系統的熵池 dev random 和 dev urandom 中放的就是熵池中的部分隨機資料,dev random 裡只放入熵池中達到一定熵值的情...

隨機數生成 偽隨機數和真隨機數

c語言隨機數的生成,很隨機,又不隨機,比如像下面的程式 c語言生成隨機數的函式在stdlib.h庫中 include includeint main return 0 上面的 經過執行生成了 41 18467 6334 26500但是無論執行多好遍結果都是一樣的,隨機數並不隨機。這是因為rand 函...

隨機數 科普 真隨機數和偽隨機數

位元幣使用者很喜歡討論 非對稱加密 橢圓曲線 量子計算機 這類高深莫測的話題,然後再以一種非常莫名其妙的方式把幣弄丟,比如說 隨機 隨機很重要,對於位元幣這種密碼學電子貨幣來說,尤其重要。可惜社群內對於隨機的討論並不多,導致很多人缺乏正確的認識,因此,我們今天就和大家聊聊隨機。說到隨機,有兩個必須要...