人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

以下のことをエクセルで行う方法を教えてください。
以下のような条件で乱数を発生させる。
?乱数は2値(例:0,1)
?乱数発生確率を指定する。(例:1の発生確率を70.05%)
?乱数発生回数を指定する。(例:1000回、1000個のセルに乱数で作った0か1が入る)
エクセルで無理でしたら、そのようなことが可能なソフト、
そのような情報がある書籍・サイト情報でも構いません。

以上よろしくお願いいたします。

●質問者: great_pessimist
●カテゴリ:コンピュータ 科学・統計資料
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● うぃんど
●100ポイント ベストアンサー

下記のような式をA1に入れて、A2からA1000までコピー

=IF(INT(RAND()*10000)<7005, 1, 0)

B1に7005という数値を入れておくなどしてもいいですね

=IF(INT(RAND()*10000)<$B$1, 1, 0)

上記いずれの計算式も、再計算が実施される度に数値が変わります
結果を固定値として使いたい場合は「形式を選択して貼り付け」で、
別のセルに結果の「値」だけをコピーすればよいでしょう

A1からA1000までを選択してコピー → 形式を選択して貼り付けで「値」を選択


Silvanusさんのコメント
細かい話ですけど、その方法だと、70.06%になりませんか? INT(x)<=7005はx<7006ではなかったでしたっけ? INT()使用しなくても、普通にRAND()<0.7005で良い様な気がしますが。 %指定が必要なら、$B$1の代わりに$B$1/100とすれば良いでしょうし。 違ってたらごめんなさい。

うぃんどさんのコメント
<= ではなく < ですね ご指摘感謝! INT(RAND()*数値)という式については、 整数同士の演算にして誤差を減らすという古くからの方法です

Silvanusさんのコメント
浮動小数点演算のゴミ(誤差)の発生を 疑似的な固定小数点演算にして解消しようということでしょうか。 それなら理解できます。しかし、今の表計算ソフトの精度では このご質問のケースも含め、誤差が問題になる様なケースは 実質的に起こらないのではないでしょうか。 それに、疑似的に固定小数点演算にするための係数(ここでは10000)を 設定する%値の小数点以下の桁数が増えた場合は変えなくてはならず %値に直値でなく計算結果を利用するとなれば桁数は不明になりますので 高精度を要求しないユーザーさんとって面倒臭くなりはしないか心配です。

うぃんどさんのコメント
Excelの計算精度の悪さはいろいろと問題視されてますし、 乱数発生だけでも学問になるほど複雑な話なので、 「出来る限りのことをやっておこう」ってことです

Silvanusさんのコメント
なるほど了解です。丁寧なご返答有難うございました。

great_pessimistさんのコメント
windofjulyさん 回答いただきありがとうございました。 想定していたことができました。助かりました。 また、コメントもありがとうございます。 私なんか全然わかりませんが、難しい分野なんですね。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ