複製鏈接
請複製以下鏈接發送給好友

隨機種子

鎖定
隨機種子(Random Seed)是計算機專業術語,一種以隨機數作為對象的以真隨機數(種子)為初始條件的隨機數。一般計算機的隨機數都是偽隨機數,以一個真隨機數(種子)作為初始條件,然後用一定的算法不停迭代產生隨機數。
中文名
隨機種子
外文名
Random Seed
類    別
計算機術語
對    象
隨機數
條    件
真隨機數(種子)為初始條件

隨機種子計算方法

一般種子可以以當前的系統時間,這是完全隨機的
算法1:平方取中法
(1)將種子設為X0,並mod 10000得到4位數
(2)將它平方得到一個8位數(不足8位時前面補0)
(3)取中間的4位數可得到下一個4位隨機數X1
(4)重複1-3步,即可產生多個隨機數
這個算法的一個主要缺點是最終它會退化成0,不能繼續產生隨機數。
算法2:線性同餘法
(1)將種子設為X0,
(2)用一個算法X(n+1)=(a*X(n)+b) mod c產生X(n+1)
一般將c取得很大,可產生0到c-1之間的偽隨機數
該算法的一個缺點是會出現循環。
在windows平台下,可以考慮將如下參數作為影響種子的因素。

隨機種子影響因素

系統啓動以來的嘀嗒時間
説明:該時間與系統運行時長相關,
當前進程Id號
説明:該Id與系統啓動進程數量及次序有關,一般波動範圍較小。
當前進程句柄
説明:該句柄實質就是內存地址,但每次進程啓動時地址值是不確定的。
進程時間參數
説明:
⒌GetCurrentThreadId
當前線程Id號
當前線程句柄
⒎GetThreadTimes
線程時間參數
⒏GetCurrentHwProfile
系統Color
⒒GetSystemPowerStatus
電源狀態
⒓GetKeyboardState
鍵盤狀態
⒔GlobalMemoryStatus
內存狀態
⒕time
當前時間 秒
⒖GUID
各硬件設備GUID
⒗MAC
網卡mac
CPU Id號
⒙聲卡錄音噪音
該參量與環境相關
⒚用户鍵盤間隔時間
該參量與用户習慣相關
其次,盡最大可能增加這些因素的維度。這裏説的維度是指
種子結果與因素之間的關聯程度。一般使用hash函數對多個
因素進行哈希運算。這樣得到的種子具有較強的散列特性。
通過以上技術手段得到的種子產生的偽隨機數是具有較好
統計特性的,它不依賴於某一台機器,某一時刻,某一方法,
而是複雜多變、讓人捉摸不透難於重現的。