2011-04-15 54 views
3

如何從隨機數中生成與原始列表具有相同均值和標準差的新列表?生成一個具有相同std的新列表,意思是

我試過newlist = mean(list)+ std(list)* randn(100,1);這是我在Matlab網站上發現的,但它產生了與原始版本略有不同的std和意思,因爲新的意思總是更大。

+0

100分可能不足以得到完全相同的均值和標準差。嘗試更多的觀點。 – mor22 2011-04-15 12:42:33

回答

2

訣竅是生成均值爲0和std dev 1的隨機數。我們通過生成任何舊的隨機數來完成此操作,然後確定均值和標準差。

% generate your random numbers 
r = randn(100, 1); 

% scale the variance 
r2 = r/std(r); 

% shift the mean 
r3 = r2 - mean(r2); 

%check your answer 
abs(mean(r3)) < sqrt(eps) 
abs(std(r3) - 1) < sqrt(eps) 

現在newlist = mean(list) + std(list) * r3應該給你你需要的東西。

+0

我明白了。感謝那 :) – 2011-04-15 12:51:59

0

對不起,回答一個問題一個問題,但我有問...

爲什麼你需要確保你的隨機數的矢量的平均值是你原來的載體正是一樣的嗎?以類似的方式,爲什麼標準偏差需要完全相同?

如果我運行蒙特卡羅仿真或其他類似的,我試圖發現可能發生的事情。 如果您調整隨機數以使平均值恰好爲X,標準偏差恰好爲Y,那麼您將減少模擬包含極端事件的機會。反過來,這意味着它不太可能出現問題。

這些類型的變換作爲學術練習都很好,但是,我真的很擔心在現實世界中使用這種類型的方法。

  1. 你一些任意小量這如果你的方法是非常敏感,他們將無法正常工作擊敗你的模擬的整個目的
  2. 是平均值和標準偏差了,其本身,應該告訴你一些東西
相關問題