- ベストアンサー
発生乱数の偏りを無くしたい
エクセルで=RAND()を用いてA1~A100のセルに100個乱数を発生させたときに(乱数は0~1の幅)、0~1の値を偏り無く発生させることは可能でしょうか?? 発生した100個の乱数をコピーして形式を“値”にして貼り付けてその100個の乱数の平均や中央値をみてみると0.5にはならないことから疑問に思いました・・・。 ご存知の方アドバイスよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは 面白い疑問だなと思ったので試してみました。 A1に=Rand()を入れてA1000までコピーしました。 B1に=Average($A$1,A1)と入れてB1000までコピーしました。 これで平均値の途中経過もわかるようになります。 A1からB1000までを選んで折れ線グラフを作成し、何度か再計算をすると 乱数の振れ巾や平均値の移動の様子がわかります。 1000個の数字でも平均値で0.45~0.55くらいの振れは出るんですね。 これは0.1未満の数値も出てしまうからだと思いましたので、 乱数の範囲を0.1~0.9に絞ると平均値のぶれはとても小さくなりました。 このときの式は=Rand()*(0.9-0.1)+0.1としてやればいいです。 0.01~1.00が欲しければ=Rand()*(1-0.01)+0.01とすればいいです。
その他の回答 (1)
- driverII
- ベストアンサー率27% (248/913)
今、ためしに 1000 個でやったら平均 0.501907 でした。 乱数ですからあるていど偏りはあるでしょう。 もし何かで偏りない値がほしければ、 0~1をいくつかでわけ(0~0.2,0.2~0.4,…など) 各域に応じて乱数を発生させるしかないでしょう。
お礼
driverIIさま 早速のアドバイスありがとうございます。 やはり乱数ですからある程度の偏りはしかたないのですね・・・。 でも、ご指摘の通り“n”を増やせば偏りは小さくなりますね。 シートは大きくなってしまいますが参考にさせていただきます。ありがとうございます。
お礼
Bubucaさま 早速のアドバイスありがとうございます。 アドバイスに従い=Rand()*(1-0.01)+0.01を採用しファイルを作成しました。おかげでアドバイス通り偏りはだいぶ少なくなりました!! 今後もアドバイスよろしくお願いします。