2012-08-22 63 views
2

下面是關於隨機數的一個大問題:一系列隨機數是否可以包含重複的數字?關於一系列純隨機數的困惑

我對所謂的純隨機數感到困惑嗎?我想如果我們想在0-9的範圍內生成一系列20個隨機數,那麼顯然必須有重複,但是正因爲如此,我們不能說該系列是純粹的隨機數,對嗎?

+1

純粹的隨機數是非確定性的。就那麼簡單。忽略手頭的哲學。 – nullpotent

+7

http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/00000/2000/300/2318/2318.strip.gif –

回答

4

通常,我們不會說一個特定的序列是隨機的。相反,我們討論隨機分佈(許多可能的序列及其概率)。

當您擲出一枚硬幣時,它可能擡起頭或擡起頭來。頭不是隨機的,尾巴也不是隨機的。這是隨意擲硬幣的行爲。

隨機序列可以從許多不同的分佈中繪製(或採樣)。當我們選擇一個分配時,我們經常試圖模擬一些物理過程。例如,如果我們要按順序對幾個模具輥進行建模,那麼我們可以繪製從1到6的幾個整數。由於我們所建模的模具可能有重複,因此我們的繪製可能會有重複。序列[1,1,1]具有等同於[2,5,3]的概率。每種可能性具有相同概率的分佈稱爲統一。

如果我們想模擬洗牌,那麼就不能重複。當一副撲克牌被洗牌時,每張撲克牌只有一個位置;它不能重複。在這種情況下,序列[1,1,1]不能出現。洗牌分配也是統一的(每種可能性都有相同的概率),但是它不會包含重複的序列。

用於從隨機分佈中選擇序列的計算方法根據分佈而變化。要創建一個沒有重複發生器的重複序列,我們可以簡單地從發生器收集一個樣本,測試它是否重複,如果是重複,則丟棄它並重試。這可行,但有更有效的方法來計算這樣的序列。

也有不等概率的分佈,這種分佈發生在諸如尋找分佈的許多樣本的平均值或客戶到達時間樣本的情況下。

5

當然,一系列隨機數可能包含重複的數字。當你拋出一個純粹的隨機骰子時,它也可以連續兩次落在同一個數字上!

3

隨機數確實包含重複序列。你的直覺在這裏是不正確的,因爲判斷一個真正的隨機序列和試圖產生一個明顯隨機序列的人之間的區別的最好方法之一就是事物在人類生成的序列中重複次數更少。

隨機生成數字的另一個重要特性是,下一個數字的出現概率理想情況下應與先前觀察到的數字無關。例如,將99個硬幣作爲頭隨意擲在隨機硬幣上,這不太可能,因爲這不會影響頭上第100枚硬幣的機率。雖然你可能有一個很好的例子,你的硬幣實際上並不平衡

編輯: 針對此提出了關於確定一系列的數字是隨機的或不是我感興趣的讀者統計隨機性維基百科文章的一個問題:http://en.wikipedia.org/wiki/Statistical_randomness

串的成功或失敗數字(以及這些數字的生成器)通常通過應用一系列隨機性測試來測量。例如,如果您看到一大組數字的數字過多,您會合理地得出結論:數字的分佈不均勻。同樣,如果您只計算在隨機數列表中出現0之後發生的所有數字,您也應該期望這些數字是均勻分佈。您也希望在您的發行版中使用一定數量的雙位數字('00'或'11)。這些測試的數量是無限的,你可以在一系列的數字上進行測試,並且大概是它失敗的測試次數越少(與同一測試中的另一個隨機源相比)工作「更好」,它近似於一個隨機數序列。

根據機器的狀態確定隨機數發生器的輸出或使其基於輸入可靠地產生輸出的能力不會使其或多或少隨機。只有輸出的隨機性很重要。但是,在隨機應用中,攻擊者確定隨機數通常的能力對於應用來說是非常糟糕的。 (尤其是密碼和賭博應用)。

+0

最近,我正在研究algrthm 4純隨機數生成,如我們編程每種程序設計語言(c,java ..)提供函數2生成隨機數,但所有它們都是僞隨機數,2天我創建一個函數,它將返回我的RAM的d個可用字節作爲整數。作爲d數量f用過的內存在運行系統中有所不同,我猜它會給我隨機的數字。我用在定時器下運行的函數生成的100多個數字進行檢查,並且這些數字被重複了很少的幾次,我可以對我的函數感到滿意假設它能夠給出純粹的隨機數字?你說什麼? –

+0

我在回答這個問題時添加了更多的細節。如果你的機器上的可用RAM是均勻分佈的,那麼對我而言,這將是非常令人驚訝的 - 如果你是這樣的話,那麼採用這個數字mod 8我可能會發現它更可信。但是,如上所述,在一些隨機應用程序中給攻擊者如此簡單的控制機器上隨機性的來源是很危險的,並且可能會導致意外的行爲(我認爲UNIX和windows可能會按順序彙總許多隨機性來源種下他們的隨機數發生器。) – argentage