2012-04-09 59 views
1

我不確定StackOverflow是提問這個問題的正確地方,因爲這個問題是半編程和半數學。如果我的問題很愚蠢,也真的很抱歉^ _^何時停止隨機數發生器中的循環?

我正在通過「蒙特卡羅方法」一書研究蒙特卡洛模擬。我必須學習的第一件事是關於隨機數生成器。 RNG的基本算法爲:
1.初始化:從S上的分佈μ繪製種子S0。設置t = 1.
2.轉變:設置St = f(St-1)。
3.輸出:設置Ut = g(St)。
4.重複:設置t = t + 1並返回步驟2.

(μ是狀態S的有限集合上的概率分佈,輸入是S0並且我們希望它是輸出Ut的隨機數)

這並不難理解,但這裏的問題是我沒有看到隨機因素在於重複次數。我們如何決定何時停止RNG的循環?我讀到的所有實現RNG的示例都循環了100次,並且它們爲特定的種子返回相同的值。它不是隨機的> _ <

有人可以解釋我在這裏失蹤了嗎?任何幫助將不勝感激。謝謝大家

+0

1/2-programming + 1/2-mathematics = 1計算機科學;這當然可以接受。 – 2012-04-09 06:00:25

回答

2

如果沒有專門的硬件,你無法在計算機上得到一個真正的隨機數序列。 (這種專用硬件通過使用物理學來提供隨機性來執行骰子的初始滾動等效,電子部分通常使用恆溫下專用二極管的電子噪聲;其他部分使用放射性衰減事件)

沒有專門的硬件,你可以生成的是僞隨機數,正如你所觀察到的,它總是爲相同的初始種子生成相同的數字序列。對於簡單的應用程序,您通常可以從調用時生成一個初始種子,這實際上是隨機的。

而當我說「簡單的應用程序」,我是不包括密碼學。(不只是如此,尤其是)。

+0

感謝您的明確答覆 – 2012-04-09 06:31:43

1

有時,當你試圖調試仿真,你實際上有「隨機」號碼可重複的流,所以你可能會專門派出流開始一個特定的種子。

例如在回答Creating a facet_wrap plot with ggplot2 with different annotations in each plot RCS通過使用R代碼

set.seed(1) 
df <- data.frame(x=rnorm(300), y=rnorm(300), cl=gl(3,100)) # create test data 

纔去到演示如何回答這個問題實際創建重複性組數據開始回答。