2010-10-31 45 views
4

從紙質我讀的隨機數的權利知道:引起有已知的均值和方差

... 
S(t+1, k) = S(t, k) + ... + C*∆ 
... 
∆ is a standard random variable with mean 0 and variance 1. 
... 

如何產生這一系列的這一均值和方差的隨機值?如果有人鏈接到C或C++庫,我會很高興,但如果有人告訴我如何去做,我不會介意實現它:)

回答

5

你對的\Delta分配任何限制?如果不是,你可以使用[-sqrt(3), sqrt(3)]的統一分配。這將起作用的原因是因爲對於均勻分佈[a,b],方差是1/(12) (b-a)^2

+0

@srean文章我試圖複製的結果,現在沒有指定任何限制對Δ的分配方式。 – 2010-10-31 01:44:01

+0

然後,我建議將是最簡單的方法。只需撥打您蘭特功能,因此它的規模,所以它是'之間[-sqrt(3),開方(3)]'和'不[0,1]' – srean 2010-10-31 01:46:46

+0

@srean你是怎麼找到的sqrt(3)值? – 2010-10-31 02:12:01

2

您可以使用Box-Muller transform

假設ù和U 是被均勻地分佈在區間(0獨立隨機變量,1]設

則Z 和Z 與標準偏差的正態分佈的獨立隨機變量1.

+1

他沒有說他需要一個正常/高斯分佈,所以才擴大統一的會少工作。但是,如果他需要你的高斯的是去 – srean 2010-10-31 01:39:49

0

Waffles是一個成熟,穩定的C++庫,你可以使用。特別是,* waffles_generate *模塊中的噪聲函數將按照您的要求進行操作。

從中心和擴散(均值和標準差)也需要知道 概率分佈的隨機數均取自

除了。如果您正在閱讀的論文對此沒有提及,並且沒有其他合理的推理支持上下文,那麼作者可能指的是正態分佈(高斯) - 因爲這是最常見的,並且因爲這兩個參數一個需要完全指定一個正態分佈的均值和sd。很多發行版本並未用這種方式指定 - 例如,對於Gamma發行版,需要使用shape,scale和rate;指定物流,你需要的位置和規模等

+0

本文的作者不需要暗示高斯隨機變量。在很多統計分析中,你關心的是時刻。在這個特殊情況下,它似乎只是前兩個時刻。因此,@Vitor可以靈活地選擇滿足要求的分佈,但最爲簡單。 – srean 2010-10-31 01:54:47

0

如果你想要的它一定的均值爲0,方差爲1,可能是最簡單的就是這個。你有一個統一的隨機數發生器unif(),它給你0到1之間的數字嗎?如果你想讓數字非常接近正態分佈,可以加上12個統一的(0,1)數字並減去6.如果你希望它確實是一個正態分佈,你可以使用Box-Muller變換,正如馬克所說,如果你不介意投擲日誌,正弦和餘弦。

+0

這相當於[http://stackoverflow.com/questions/4061446/generating-random-numbers-with-know-mean-and-variance/4061474#4061474]。但是更多地調用隨機數生成器可能會很昂貴。它更容易調用一次,並縮放和移動輸出。有一個sqrt(3)的調用,但它只需要一次。 – srean 2010-10-31 02:37:06

+0

@srean:你說的對,制服。對於法線,我沒有計時,但日誌,正弦和餘弦調用可能需要更多時間。假設時間甚至是一個問題。它可能不是。 – 2010-10-31 13:50:55