為什麼有程式設計師都說取的隨機數是偽隨機數?

時間 2021-05-31 01:37:10

1樓:Leaf koi

系統裡面也有產生真隨機的方法比如使用鍵盤敲擊模式,磁碟電活動,滑鼠移動,系統時間的瞬時值等等,但是在安全方面,這些隨機數在產生速度和一些性質並不好(比如密碼學要求2進製隨機序列0的個數和1的個數近似相等)。偽隨機數產生器用真隨機序列做種子生成一組序列,看起來像是隨機的,其實只是週期很大(例如常用的M31),但是能保證序列具有一些較好的性質。

2樓:

個人覺得現在取到的值都算是偽隨機數,真正的隨機數應該只和時間有關係,而和電腦硬體設施或者周圍環境都不相關,如果採用噪音輸入做隨機數,那麼高噪音區的隨機數就比低噪音區的隨機數樣本取值大,如果只是把取值當做乙個種子來說,那麼後續的演算法如何保證取不同區間的值得出的結果數範圍相同,如果能夠保證這種範圍,那麼種子就不那麼重要了,何必去取乙個噪音的測量值做種子,用本地時間的微秒做種子豈不更方便

3樓:垠教授

我不太懂哈,但我師弟最近在做遺傳演算法,需要隨機數,用的C內建函式實現,這是真的還是假的隨機數呢?還是乙個偽的呢?代他問問。懶得去查資料了。

4樓:

所謂偽隨機,即 num = Random(seed)。也就是說,同樣的seed,其生成的佇列也是一樣。這樣對於加密等涉及安全的演算法極為不利:

hacker 可以通過獲取一定長度的隨機數序列來推出seed。

這是偽隨機數的大弊端。

5樓:

樓上都已經回答了,我來說點題外話。

不要覺得是偽隨機就一無是處,有時候偽隨機就是要比真隨機好用,如:場景重現。

例如要記錄乙個高階玩家玩的俄羅斯方塊記錄,一般方塊是隨機生成的,所以需要記錄的條件有:

1方塊型別 2旋轉角度 3下落位置

而方塊是偽隨機的話,其實只需要記錄隨機種子便可以了。當然2和3也是要記錄的。

6樓:星星

為什麼生成的都是偽隨機數?:計算機是乙個有限的狀態空間,無論如何設計演算法,生成的隨機數都會走向迴圈

如何生成真隨機數?利用物理狀態,比如利用溫度感測器獲得隨機數一般來講,遊戲對隨機數的產生要求是不高的,比如你舉的麻將的例子,要求高的是安全領域。

下班查了資料詳細來答,如果題主感興趣,可以去查密碼學的書。

7樓:MadStrawberry

如果你種子相同,你生成的數列肯定是每次一樣的...

種子不同,不過讓你看起來覺得每次生成的數列不一樣罷了...

種子的選擇有規律嗎?肯定是有!那麼生成的隨機數也一定是有規律的了。

既然有規律,那肯定就是偽隨機了...

8樓:黃sr

嚴格意義上講,計算機上任何看似精確的東西都是偽的。這是由於計算機只能處理0,1數字和處理效能和儲存能力有限決定的。至於隨機數,如果不是偽隨機,那麼儲存數量就是無窮的,這是做不到的。

9樓:Happy Buddha

這個好像在大陸的高一還是高二課本裡都有,明確說了,所謂的隨機數其實是偽隨機數,並不是真正隨機的。

因為偽隨機數在多大的範疇內設計演算法,因為是有演算法產生的,那麼就必然不隨機,隨機這個屬性和演算法本身就是矛盾的,但是你可以通過優化演算法或者裝置來使你的隨機數更近隨機。

10樓:魯哈花

C系的語言是否可以以唯讀方式在硬碟或記憶體中根據隨機生成的位址和偏移來搜尋,把任意不為00或FF的值作為種子?

你都已經先隨機了,還產生種子何用?

11樓:陳南旭

因為計算機是有限狀態機

有些人說以現實雜訊作為隨機數,我只能說如果你能曉得它的分布的話還是可以用的,如果不能知道一樣是不能用的。對了,你還得確定它是平穩的。但是對於日常應用做個鬥地主發牌程式來說偽隨機已經足夠好用,真正對於隨機數有苛刻要求的是密碼學和一些科研領域,然而目前大多數使用的也是偽隨機演算法。

有人又說我們用自然雜訊作為種子行不行?但是決定隨機數'質量『的是隨機數生成演算法而不是種子,對於觀測者來說,種子是什麼並不重要。設想一下乙個極端情況,隨機數生成函式f(seed) = seed%5這樣乙個很弱雞的演算法,不管你的種子取的多隨機,只要偽隨機序列取的長度大於5,我就能找到規律,所以說並沒有卵用。

12樓:兔子先生

偽隨機數有破解的可能性,比如如果你在伺服器上面針對每個使用者的每個行為製作乙個隨機數發生器,或者針對全服,但伺服器人數很少,並且隨機數發生器是某種固定演算法的,那麼這個隨機數發生器可以根據結果匹配來獲得下一次的結果。

只要在本機做出隨機數的序列,然後匹配一下就可以了,這種事是發生過的。

至於種子,這就很難說了,我覺著應該不靠譜,因為這個值很可能固定在某個數字上的概率非常高。有些人是取時間毫秒數的,可能更好點。

為什麼說 最優秀的程式設計師大部分是C程式設計師?

圓胖腫 因為大多數人的智商理解不了lisp或者haskellc相對容易懂,因為tangible 這就猶如其實最優秀的科學家從來都是數學家,但是處境喜劇裡面出現的往往是物理學家一樣 太抽象的東西,一般人理解不了 新聞炒作的也是諾貝爾獎,其實論難度,菲爾茲獎明顯比諾貝爾獎要難一點諾貝爾獎也是靠理論物理撐...

為什麼都說程式設計師30歲之後就會失業呢!?

井底之蛙 程式設計師的工作本身算不上累,但是由於時間比較長,就會讓人感到勞累。因為長時間久坐,而且姿勢不正確,腰椎 脊椎就容易出問題,一旦上年紀就扛不住這樣的工作強度,就會比較容易被淘汰。上述是一方面,另一方面是現在這個資訊時代,技術更新迭代比較快,程式設計師需要保持自己的學習能力才不容易被時代的浪...

為什麼程式設計師普遍是男生?

張先生 同意文理分科的說法,首先,文理分科分走了一部分女生,然後大學選專業,對計算機感興趣的,由於從小的教育和經歷,我個人覺得,男生肯定多於女生,這樣又分走了一部分女生,其次,在大學學習過程中,我發現女生普遍學習認真,而且更多才藝,我們這個專業的女生,畢業的時候,大部分出國或者保研或者考研了,但是研...