dポイントプレゼントキャンペーン実施中!

さいころを2つ振って両方とも1の出る確率、同じ目が出る確率を求めるプログラムを作りたいのですが、初心者なのでまったくわかりません。誰か教えてください、お願いします。

A 回答 (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が出るのが若干大きくなりました。
こういうことは、使用する乱数(の良さ)に依るところもあるので、まあ、なんとも言えないですけど。
試行回数は、適当に大きくしたりしてみて下さい。
    • good
    • 1

Randomize ' 乱数発生ルーチンを初期化します。


しておいて、
function dice() as Integer
dice=Int((6 * Rnd) + 1) ' 1 から 6 までの乱数を発生させます。
end function

みたいにしておいて
適当な(かなりの回数)回数diceを呼び出し
試行回数と求める条件の成立した回数を数えて
確率=成立回数/試行回数
で求められます。

この回答への補足

すいません、ほんとに初心者なのでdiceの呼び出しかた、条件の成立した回数の数え方がわかりません。具体的にプログラムを教えてもらえませんか?

補足日時:2005/06/07 21:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!