見出し画像

【シミュレーション】n 枚のカードで作られた数値は 3 の倍数か?

京都大学2017年度入学試験 数学(理系)の確率問題をエクセルVBAでシミュレーションしました!

問題と理論値

京都大学2017年度入学試験 数学(理系)の確率問題は以下のようなものでした。

問題:

画像1

詳しい導出は参考書等に譲りますが、解析解は以下のようになります。

画像2

シミュレーション

VBAを用いてシミュレーションした結果が以下の表とグラフです。

画像3

画像4

有効数字 2 桁以上の精度で、理論値と一致する結果が得られました!

エクセルとVBA全文

今回の計算に使用したエクセルファイルです。

VBAの全文です。

Sub main()
   Const MAX_COUNT As Long = 100000

   Dim i As Long
   Dim j As Long
   Dim row As Long
   
   Dim n As Long
   Dim count As Long
   Dim sum As Long
   
   row = 3
   Do While Cells(row, 2) <> ""
       n = Cells(row, 2)
       
       count = 0
       For i = 1 To MAX_COUNT
           sum = 0
           For j = 1 To n
               sum = sum + WorksheetFunction.RandBetween(1, 5)
           Next j
           
           If sum Mod 3 = 0 Then
            count = count + 1
           End If
       Next i
       
       Cells(row, 3) = count / MAX_COUNT
       
       row = row + 1
   Loop
End Sub

―――――記事はここまで―――――
ありがとうございました! 
スキよろしくお願いします!

この記事が気に入ったらサポートをしてみませんか?