![見出し画像](https://assets.st-note.com/production/uploads/images/19207180/rectangle_large_type_2_3306543d9ee06537d04b36ae294fdb47.png?width=1200)
【シミュレーション】京都大学2019数学(理系)
京都大学2019年度入試の数学(理系)で出題された確率の問題を数値的に解いてみました!
問題と解析解
問題
理論的には、二重総和の計算がポイントとなる、基本的な確率問題と言えると思います。解析解は下の通りです。
シミュレーション
シミュレーションの概要:
〈サイコロを投げる回数〉を変化させながら、各〈サイコロを投げる回数〉に対して、10万回シミュレーションを行った。そのうち、問題の条件を満たすものの個数を数え、その割合を記録し、理論値と比較した。
下はシミュレーションの結果を示した表とグラフです。
結論
有効桁数2,3桁で、計算値と理論値が一致することがわかりました!
エクセルとVBA全文
今回のシミュレーションに用いたエクセルです。
VBAの全文を載せておきます。
Option Explicit
Const MAX_N As Long = 100000
Sub main()
Dim diceEyes() As Long
Dim i As Long
Dim j As Long
Dim n As Long
Dim row As Long
Dim count As Long
Dim gapCount As Long
row = 3
Do While Cells(row, 2) <> ""
n = Cells(row, 2)
count = 0
ReDim diceEyes(0 To n) As Long
diceEyes(0) = 0
For i = 1 To MAX_N
Application.StatusBar = n & ", " & i
DoEvents
gapCount = 0
For j = 1 To n
diceEyes(j) = WorksheetFunction.RandBetween(1, 6)
Next j
For j = 1 To n
If diceEyes(j - 1) <= 4 And diceEyes(j) >= 5 Then
gapCount = gapCount + 1
End If
Next j
If gapCount = 1 Then
count = count + 1
End If
Next i
Cells(row, 3) = count / MAX_N
row = row + 1
DoEvents
Loop
End Sub
-----記事はここまで-----
記事はここで終わりです。
読んでくださり、ありがとうございます!