- ベストアンサー
乱数を発生させて確率を求める
さいころを2つ振って両方とも1の出る確率、同じ目が出る確率を求めるプログラムを作りたいのですが、初心者なのでまったくわかりません。誰か教えてください、お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Public Sub test() Dim 試行回数, 両方1, 同じ目 Dim dice1, dice2 Randomize ' 乱数発生ルーチンを初期化します。 同じ目 = 0 両方1 = 0 For 試行回数 = 1 To 10000 '1万回試してみる dice1 = dice() '1個目のサイコロ dice2 = dice() '2個目のサイコロ If dice1 = dice2 Then '同じ目が出た 同じ目 = 同じ目 + 1 '同じ目がでたことをカウントして記録 If dice1 = 1 Then 両方1 = 両方1 + 1 '両方1がでたことをカウントして記録 End If Next MsgBox "同じ目が出た割合:" & 同じ目 / 10000, , "同じ目が出た割合" MsgBox "両方1が出た割合:" & 両方1 / 10000, , "両方1が出た割合" End Sub Function dice() As Integer dice = Int((6 * Rnd) + 1) ' 1 から 6 までの乱数を発生させる End Function '------------------------------------------------ って感じですかね。 やってみたところ 同じ目:1.167 両方1:0.0288 になりました。 理論的には、 同じ目:1.16666…(1/6) 両方1:0.02777…(1/36) なので 実験結果としては、両方1が出るのが若干大きくなりました。 こういうことは、使用する乱数(の良さ)に依るところもあるので、まあ、なんとも言えないですけど。 試行回数は、適当に大きくしたりしてみて下さい。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
Randomize ' 乱数発生ルーチンを初期化します。 しておいて、 function dice() as Integer dice=Int((6 * Rnd) + 1) ' 1 から 6 までの乱数を発生させます。 end function みたいにしておいて 適当な(かなりの回数)回数diceを呼び出し 試行回数と求める条件の成立した回数を数えて 確率=成立回数/試行回数 で求められます。
補足
すいません、ほんとに初心者なのでdiceの呼び出しかた、条件の成立した回数の数え方がわかりません。具体的にプログラムを教えてもらえませんか?