Pythonでサイコロの確率をシミュレーションする:1の出る確率と結果のグラフ化
サイコロを振るシミュレーションは、確率の基本的な概念を理解するための良い方法です。この記事では、Pythonを使って100万回サイコロを振り、その中で「1」が出る確率を計算します。また、1から6までの各目が出た回数をグラフにして可視化します。
サイコロのシミュレーションを行う
Pythonでサイコロを振るシミュレーションを行うために、random
モジュールを使用します。random.randint()
関数を使って、1から6までの数値をランダムに生成し、100万回繰り返します。
サイコロを振って「1」の出る確率を計算
以下のコードは、サイコロを100万回振り、「1」が出る回数と確率を計算します。
# 必要なモジュールをインポート
import random
# サイコロを振る回数
num_rolls = 1000000
# 「1」が出る回数をカウント
count_ones = 0
# サイコロを100万回振る
for _ in range(num_rolls):
roll = random.randint(1, 6)
if roll == 1:
count_ones += 1
# 「1」の出る確率を計算
probability_of_one = count_ones / num_rolls
print(f"100万回サイコロを振った結果、'1'が出た回数: {count_ones}")
print(f"'1'の出る確率: {probability_of_one:.6f}")
このコードでは、サイコロを100万回振り、その中で「1」が出た回数と確率を計算しています。結果として、出た回数と確率が表示されます。
1から6までの各目が出た回数をグラフ化
次に、1から6までの各目が出た回数を集計し、matplotlib
を使ってグラフに表示します。
# 必要なモジュールをインポート
import random
import matplotlib.pyplot as plt
# サイコロを振る回数
num_rolls = 1000000
# 各目が出た回数をカウントするリスト
roll_counts = [0] * 6
# サイコロを100万回振る
for _ in range(num_rolls):
roll = random.randint(1, 6)
roll_counts[roll - 1] += 1
# 各目のラベル
labels = ['1', '2', '3', '4', '5', '6']
# グラフを作成
plt.bar(labels, roll_counts, color='skyblue')
# グラフのタイトルとラベル
plt.title('Results of Rolling a Die 1,000,000 Times')
plt.xlabel('Die Face')
plt.ylabel('Count')
# グラフを表示
plt.show()
このコードでは、1から6までの各目が出た回数を集計し、それを棒グラフにしています。random.randint(1, 6)
でランダムにサイコロの目を生成し、その結果をリストroll_counts
に記録します。最後に、matplotlib
のplt.bar()
を使ってグラフを描画します。
結果の解説
サイコロを100万回振った結果、「1」の出る確率は理論上約16.67%(1/6)ですが、シミュレーションでは多少の誤差が出ることがあります。グラフには1から6までの各目が出た回数が表示され、各棒の高さがほぼ同じになるはずです。これにより、各目が均等に出ることが視覚的に確認できます。
まとめ
Pythonを使って、サイコロを100万回振るシミュレーションを行い、「1」の出る確率を計算しました。また、1から6までの各目が出た回数をグラフで可視化しました。確率と統計の基本を理解するために、このようなシミュレーションは非常に有効です。ぜひ、自分でも試してみて、確率についての理解を深めてください。
コメント