偽隨機性- 維基百科,自由的百科全書 - Wikipedia
文章推薦指數: 80 %
偽隨機性(英語:Pseudorandomness)是一個過程似乎是隨機的,但實際上並不是。
例如偽亂數是使用一個確定性的演算法計算出來的似乎是隨機的數序,因此偽亂數實際上並不 ...
偽隨機性
維基百科,自由的百科全書
跳至導覽
跳至搜尋
此條目需要精通或熟悉相關主題的編者參與及協助編輯。
(2013年5月27日)請邀請適合的人士改善本條目。
更多的細節與詳情請參見討論頁。
偽隨機性(英語:Pseudorandomness)是一個過程似乎是隨機的,但實際上並不是。
例如偽亂數是使用一個確定性的演算法計算出來的似乎是隨機的數序,因此偽亂數實際上並不隨機。
在計算偽亂數時假如使用的開始值不變的話,那麼偽亂數的數序也不變。
偽亂數的隨機性可以用它的統計特性來衡量,其主要特徵是每個數出現的可能性和它出現時與數序中其它數的關係。
偽亂數的優點是它的計算比較簡單,而且只使用少數數值很難推算出計算它的演算法。
一般人們使用一個假的亂數,比如電腦上的時間作為計算偽亂數的開始值。
目次
1計算機偽隨機數函數
1.1C語言
2使用
3參見
4延伸閱讀
5外部連結
電腦偽亂數函式[編輯]
用來計算偽亂數的函式被稱為隨機函式,使用隨機函式產生隨機數的演算法稱為亂數生成器。
一些隨機函式是周期性的,雖然一般來說使用非周期性的函式要好得多,但周期性的隨機函式往往快得多。
有些周期函式的係數可以調整,之後它們的周期非常大,基本上與非周期的函式效果一樣。
C語言[編輯]
/*使用ANSIC可移植算法*/
staticunsignedlongintnext=1;//种子
intrand(void)//生成伪随机数
{
next=next*1103515245+12345;
return(unsignedint)(next/65536)%32768;
}
voidsrand(unsignedintseed)//修改种
{
next=seed;
}
可見,偽亂數是由一套產生亂數的演算法實現的。
使用[編輯]
在電腦類比中偽亂數用來類比產生隨機的過程,背景雜訊產生器中也可應用偽亂數。
由於偽亂數不是真的亂數,在有些方面它們不能被使用,例如在密碼學中使用偽亂數要小心,因為其可計算性是一個可以攻擊的地方。
統計學、蒙特·卡羅方法上使用的偽隨機數也必須挑選週期極長、隨機性夠高的隨機函式,以確保計算結果有足夠的隨機性。
偽亂數的一個特別大的優點是它們的計算不需要外部的特殊硬體的支援,因此在計算機科學中偽亂數依然被使用。
真正的亂數必須使用專門的裝置,比如熱噪訊號、量子力學的效應、放射性元素的衰退輻射,或使用無法預測的現象,譬如使用者按鍵盤的位置與速度、使用者運動滑鼠的路徑坐標等來產生。
對於移動式計算,採用加速度感測器協助亂數生成亦是一種普遍做法。
參見[編輯]
線性同餘方法
平方取中法
M-sequence
梅森旋轉演算法
偽亂數二進位數列
延伸閱讀[編輯]
DonaldE.Knuth(1997)TheArtofComputerProgramming,Volume2:SeminumericalAlgorithms(3rdedition).Addison-WesleyProfessional,ISBN0-201-89684-2
OdedGoldreich.(2008)ComputationalComplexity:aconceptualperspective(頁面存檔備份,存於網際網路檔案館).CambridgeUniversityPress.ISBN978-0-521-88473-0.(LimitedpreviewatGoogleBooks)
SalilP.Vadhan.Pseudorandomness.FoundationsandTrends®inTheoreticalComputerScience:1–336.[2018-04-02].doi:10.1561/0400000010.(原始內容存檔於2018-12-13).
外部連結[編輯]
HotBits:Genuinerandomnumbers,generatedbyradioactivedecay(頁面存檔備份,存於網際網路檔案館)
UsingandCreatingCryptographic-QualityRandomNumbers
InRFC1750,theuseofpseudorandomnumbersequencesincryptographyisdiscussedatlength.
取自「https://zh.wikipedia.org/w/index.php?title=伪随机性&oldid=71413953」
分類:偽隨機性理論計算機科學隱藏分類:自2013年5月需要專業人士關注的頁面含有英語的條目使用ISBN魔術連結的頁面使用RFC魔術連結的頁面
導覽選單
個人工具
沒有登入討論貢獻建立帳號登入
命名空間
條目討論
臺灣正體
不转换简体繁體大陆简体香港繁體澳門繁體大马简体新加坡简体臺灣正體
查看
閱讀編輯檢視歷史
更多
搜尋
導航
首頁分類索引特色內容新聞動態近期變更隨機條目資助維基百科
說明
說明維基社群方針與指引互助客棧知識問答字詞轉換IRC即時聊天聯絡我們關於維基百科
工具
連結至此的頁面相關變更上傳檔案特殊頁面靜態連結頁面資訊引用此頁面維基數據項目
列印/匯出
下載為PDF可列印版
其他專案
維基共享資源
其他語言
CatalàDeutschEnglishFrançaisPortuguêsSimpleEnglish
編輯連結
延伸文章資訊
- 1C/C++ 使用rand 函數產生隨機亂數教學與範例程式碼- G. T. Wang
固定亂數種子. 由於電腦實際上並沒有辦法自己產生「真正的亂數」,只能透過複雜的數學演算法模擬出類似亂 ...
- 2你的程式夠「亂」嗎? | iThome
亂數的產生雖然是不起眼的小函式,有機會的話可以探索一下,因為, ... 而在API文件會指出,rand()預設的亂數種子是0,可使用srand()來設定亂數種子, ...
- 3設定亂數種子數
3.RANDOMIZE 後面的參數X若省略,則將出現"Random number seed(-32768 to 326767)?" 用來要求使用者輸入種子數(SEED)後再繼續執行程式。 4.利...
- 4偽隨機性- 維基百科,自由的百科全書 - Wikipedia
偽隨機性(英語:Pseudorandomness)是一個過程似乎是隨機的,但實際上並不是。例如偽亂數是使用一個確定性的演算法計算出來的似乎是隨機的數序,因此偽亂數實際上並不 ...
- 5亂數的設定與使用
所謂亂數種子可以視為是產生亂數的一種規律,如果不加以事先設定,則每次執行程式時產生的亂數規律都會一模一樣;為了避免亂數產生順序被使用者完全掌控,因此我們常藉助 ...