Pythonでサイコロの確率をシミュレーションする:1の出る確率と結果のグラフ化

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に記録します。最後に、matplotlibplt.bar()を使ってグラフを描画します。

結果の解説

サイコロを100万回振った結果、「1」の出る確率は理論上約16.67%(1/6)ですが、シミュレーションでは多少の誤差が出ることがあります。グラフには1から6までの各目が出た回数が表示され、各棒の高さがほぼ同じになるはずです。これにより、各目が均等に出ることが視覚的に確認できます。

まとめ

Pythonを使って、サイコロを100万回振るシミュレーションを行い、「1」の出る確率を計算しました。また、1から6までの各目が出た回数をグラフで可視化しました。確率と統計の基本を理解するために、このようなシミュレーションは非常に有効です。ぜひ、自分でも試してみて、確率についての理解を深めてください。

関連記事

コメント

この記事へのコメントはありません。