- ベストアンサー
発生乱数の偏りを無くしたい
- みんなの回答 (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”を増やせば偏りは小さくなりますね。 シートは大きくなってしまいますが参考にさせていただきます。ありがとうございます。
関連するQ&A
- 発生させた乱数を用いての作業
こんにちは 今回乱数発生で300個の乱数を作りました その乱数の二乗を新しいシートに出したいのですが、 単純にひとつの値をコピーして、それを二乗してオートフィル とやっても同じ値しか出てきません コピーする段階で、Sheet1のA1 のコピーという感じでできればいいのですが 単純に乱数の値しかコピーしてくれません。 どうすればできるのでしょうか? どうか教えてください
- ベストアンサー
- オフィス系ソフト
- 乱数を発生させるプログラムを教えてください。
タイトルのままなのですが、1から100までの乱数を発生させるプログラムを知りたいです。 乱数をxとおくと、xの値は、0<x<1の範囲内でお願いします。 C言語で、rand関数を用いて、どうかお願いします。
- ベストアンサー
- C・C++・C#
- エクセルの乱数発生についてお尋ねします。
rand()のような関数のファミリーを使うと乱数が発生できます。 そこで、ある程度広がりを持ったシート内に乱数を発生させました。 それは満足していますが、マウスで処理をしたり、何かをアクティブにしたり非アクティブにしたりする操作をすると、乱数が毎回発生してしまいます。シートの数字がパッと変わるのです。 乱数を発生させるタイミングがコントロールできていないわけですが、どのように考えたらいいでしょうか。1回乱数を発生させたら固定したままで、”では、ここで乱数を発生させる”というコマンドの出し方なのですが。エクセルではどうしたらいいでしょうか。
- 締切済み
- Excel(エクセル)
- エクセルで0超1未満の乱数を発生する方法
タイトルの通りです。 EXCELのRAND関数は0以上1未満の乱数を発生しますが、0超1未満の乱数を作る方法を教えて下さい。 確率の検証用に乱数を作りたいのですが、0や1(0%や100%)は除きたいのです。もちろん非常に小さい数でも0でなければ採用したいのですが0だけはダメです。 実用上、RANDでも0は殆ど出ないとは思いますが…あるいは乱数を発生させておいて0になった時だけ再計算させれば良いのかもしれませんが、出来れば再計算無しで最初からそうしたいのです。
- 締切済み
- Excel(エクセル)
- EXCELで乱数 -RAND関数について
Excelの乱数 Rand()について教えて下さい。 入力セルの数値変更をする度に各Rnad()のセルの 値が更新されますがこれを固定する方法を教えて下さい。 また「更新」と「更新の禁止」を切り替えるにはどうすればいいか 御願いします。
- ベストアンサー
- オフィス系ソフト
- 乱数の出し方で・・・
たとえば、39人を乱数を使って並べ替えたいのですが、B列以降に名前や必要な項目を書き、A列に=RAND()を入れそれを使って並び替えるのではなく、1から39までの乱数を重複なしに発生させることはできないのですか???
- ベストアンサー
- オフィス系ソフト
- 0 からa-1 までの整数の乱数をn 個発生させ、発生した整数のヒスト
0 からa-1 までの整数の乱数をn 個発生させ、発生した整数のヒストグラムをプリントアウトしたいです.また,a とnはコマンドラインから引き渡します 0 からa-1 までの整数を発生する乱数の書き方は (int)((double)rand()/((double)RAND_MAX+1) *a); プログラムをRandHist としたとき RnadHist 10 1000 と入力すれば 0 982 1 1035 2 956 3 1102 ・ ・ 9 971 などと。出力されるようなプログラムを作る問題ですが,a とn は、任意に変えられるように したいです. どなたか教えてください.
- 締切済み
- C・C++・C#
お礼
Bubucaさま 早速のアドバイスありがとうございます。 アドバイスに従い=Rand()*(1-0.01)+0.01を採用しファイルを作成しました。おかげでアドバイス通り偏りはだいぶ少なくなりました!! 今後もアドバイスよろしくお願いします。