元のリストと同じ平均と標準偏差を持つ乱数から新しいリストを生成するにはどうすればよいですか?
newlist = mean(list)+ std(list)* randn(100,1);を試しました。これはMatlabのWebサイトで見つけましたが、新しい平均が常に大きいため、元の平均とはわずかに異なる標準と平均を生成していました。
秘訣は、平均が0で標準偏差が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
、あなたが必要なものを与えるはずです。
質問で質問に答えて申し訳ありませんが、私は尋ねなければなりません...
乱数のベクトルの平均が元のベクトルと正確に同じであることを確認する必要があるのはなぜですか?同様に、標準偏差が正確に同じである必要があるのはなぜですか?
モンテカルロシミュレーションなどを実行すると、何が起こるかを発見しようとしています。平均が正確にXで、標準偏差が正確にYになるように乱数を調整すると、シミュレーションに極端なイベントが含まれる可能性が低くなります。つまり、これは、何かがうまくいかない可能性が低いことを意味します。
これらのタイプの変換は、学術的な演習としては問題ありませんが、現実の世界でこのタイプの方法を採用することについては深刻な懸念があります。