- ベストアンサー
EXCELを活用した反復試行の確率計算
仕事でとある反復試行の発生確率を求める必要があります。 反復試行の確率計算ってEXCELで計算出来ませんでしょうか? 簡単な例でいえば、 サイコロを2回振った時の「目の合計のパターン」とそれぞれの「出現確率」を求めるみたいな。 (合計が5になる確率は~、合計が6になる確率は~みたいな感じで。) ご存じの方いらっしゃいましたら教えていただければ幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ん? 「できない」は反復試行の部分ではなくて,「サイコロを2回振った時の「目の合計のパターン」」の部分ですか。 前述の式ではRNAD()関数を使って,6面サイコロ(ただし出る目は0から5)を作っていた事は分かりましたよね? 簡単には36面体サイコロを使い,1が12面,5が6面,…刻まれていると考えて計算します。または0から11までの目が出たら1を計算,次の12から17が出たら5,…と考えるのでも同じことです。 計算例: =LOOKUP(RAND()*36,{0,12,18,24,29},{1,5,7,9,15}) #まだ出来ないと困るので念のため参考: 「または0から11までの目が出たら1を計算,次の12から17が出たら5,…」とは もちろん別のセル範囲に「36面サイコロの出た目対応表」(上述式の中身のような対応表をセルに書き出しておくだけです)を用意しておいて,普段よく使うVLOOKUP関数などを使い,値を計算させてもOKです。 #参考 「1が12面,5が6面,…刻まれていると考えて計算します。」とは 0の目がでたときの結果はこれ 1の目がでたときの結果はこれ : と36通り細かく対応を付けた対応表を別セルに用意して,結果の値をVLOOKUP関数などで計算させてももちろん構いません。 (前述の「0から11までの目が出たら1を計算,次の12から17が出たら5…」と同じ結果が確かに出ることを計算で確認してみるのもよいかもですね)
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
例示のやり方なら出来たのなら,あなたの計算でも全く同じにできますよ。計算の「単純」や「複雑」は,出来ない理由にはこれっぽっちもなりません。 でも何がなぜ,どうして出来ないのか,具体的な困り事を示せない(示す必要を感じてない?)ご様子なので,これ以上具体的な「こうしてみましょう」をお話しできるネタがありません。 それとも >みたいな事象を複数回繰り返した時の結果を求めたいのです。 が「困っている」のでしたら,ごく簡単な方法として ABC列を使って1万回試行し1回目の集計を行う DEF列を使って1万回試行し2回目の集計を行う GHI列を使って1万回試行し3回目の集計を行う : のように考えられますよと,既に回答済みです。 とは言えこれだけじゃ新しい回答がありませんので,とりあえず少し前にあった似たようなご相談のご紹介だけしておきます。 http://okwave.jp/qa/q6857497.html どうぞガンバって計算してみて下さい。
補足
返信が遅くなってすみません。 説明不足ですみませんでした。 keithinさんのRAND関数を利用したやり方だと、 ・連続した値をとる試行(1~6) ・発生する確率が一様 の場合には有効だと理解しているのですが、 試行したいのは ・発生する値が連続しない場合(1,5,6みたいな) ・発生する確率が一様ではない事象(1は1/5,5は2/5,6は3/5の確率で発生) という事象なのでご紹介いただいたやり方では試算出来ないのでは? と思ったということです。 組み立てて頂いた関数で試算可能。 僕が理解出来ていないだけ、ということでしょうか? お手数をおかけします。
- keithin
- ベストアンサー率66% (5278/7941)
A1,B1に =INT(RAND()*6) C1に =A1+B1 と記入し,A1:C1をコピーしてえいやっと1万行ほどコピーします。 以上で,相互に独立した1万回の試行をしたのと同じ結果が得られます。 F9キーを一回押すと,またはABC列をセットにしてあと何列かコピーすれば,さらに何万回でも試行できます。 #判りやすく(プロセスを可視化するため)A列B列C列を使いましたが,シンプルに =INT(RAND()*6)+INT(RAND()*6) などと式を書いて並べるだけでも,もちろんOKです。 集計は簡単に,ふつーにいつも使ってる関数で行います。 E1からE12に1から12までの数字を置いて F1:F12を選択 =FREQUENCY(A:A,E1:E12) と記入して「コントロールキーとシフトキーを押しながらEnter」する あるいは F1に =COUNTIF(A:A,F1) と記入してF12までコピー 確率を求めたいなら勿論全数 COUNT(C:C) で割り算すればいいですね。
補足
早速のご回答ありがとうございました! なるほどこういうやり方で計算出来るんですね。 例のケースはこれでばっちりです! が、、、実務で使いたかったのはここまで単純なケースではなく 1が出る確率が1/3、 5が出る確率が1/6、 7が出る確率が1/6、 9が出る確率が5/36、 15が出る確率が7/36 みたいな事象を複数回繰り返した時の結果を求めたいのです。 こういう場合は難しいでしょうか?
お礼
出来ました! というか、関数の使いこなし方を知らなさすぎですね。 まさかRAND関数で値と値の対応を指定して反復試行出来るとは。。。 >「1が12面,5が6面,…刻まれていると考えて計算します。」 方法論は単純ですが気がつきませんでした。 本当にありがとうございました。