下記の問題の通りにコードを書くのですが、確率の理解がよくわかっていません。
##問題
10本のくじの中に当たりくじが3本入っている。
このとき、2本引いて2本とも当たりとなる確率は1/15となる。
今回、プログラム上で、このような試行をn回繰り返すことにより、
「2本引いて2本とも当たりとなった」結果が何回あったかと(c回とする)、
その割合r=c/nをそれぞれ表示するプログラムを作成せよ。
プログラムには配列を用いること。
※留意点
(1) 確率については、
・10本のくじの中から同時に2本引く場合の組み合わせ: 10C2=45 通り
・当たりくじを2本引く組み合わせ: 3C2=3 通り
より、3/45 = 1/15 になる。
その他、順列による求め方もある。
(2)「大数の法則」により、nを大きくすればするほど、割合rは1/15(= 0.066666…)に近づく。
##考えたこと
10本のうち当たりくじが3本入っているということなので、これを配列を使って実装すると、
kuzi = [1,2,3,4,5,6,7,8,9,10]と置いて、この中で適当な数字3個を当たりとします。
自分なりに書いてみました。
Dim kuzi kuzi = Array(1,2,3,4,5,6,7,8,9,10) For i = 1 To 20 Step 1 num = num + 1 Randomize hiku1 = Int(Rnd*10) Randomize hiku2 = Int(Rnd*10) if hiku1 = hiku2 Then Do While hiku1 <> hiku2 Randomize hiku2 = Int(Rnd*10) Loop End if kuzi1 = kuzi(hiku1) kuzi2 = kuzi(hiku2) if (kuzi1 = 1 or kuzi1 = 4 or kuzi1 = 8) and (kuzi2 = 1 or kuzi2 = 4 or kuzi2 = 8) Then atari = atari + 1 End if 'MsgBox CInt(kuzi1) & "," & CInt(kuzi2) Next MsGbox "当たり" & atari MsgBox "当たりの割合" & CStr(atari / 20)
回答3件
あなたの回答
tips
プレビュー