二項分佈是描述固定次數獨立試驗中成功次數的概率分佈,常用於分析二元結果的事件,如拋硬幣。分佈由參數 n(試驗次數)、p(單次成功概率)和 k(成功次數)定義。概率質量函數 P(k) = C(n, k) * p^k * (1 - p)^(n - k)。NumPy 的 `random.binomial(... ...
二項分佈
簡介
二項分佈是一種離散概率分佈,用於描述在固定次數的獨立試驗中,事件“成功”的次數的概率分佈。它通常用於分析諸如拋硬幣、做選擇題等具有兩個結果(成功或失敗)的事件。
參數
二項分佈用三個參數來定義:
n:試驗次數,表示重覆相同實驗的次數。
p:每次試驗中成功事件發生的概率。
k:成功事件發生的次數,範圍為 0 到 n。
公式
二項分佈的概率質量函數 (PMF) 給出了在 n 次試驗中恰好獲得 k 次成功的概率,計算公式為:
P(k) = C(n, k) p^k (1 - p)^(n - k)
其中:
C(n, k)
是組合數,表示從 n 個元素中選取 k 個元素的方案數。
p^k
表示 k 次成功的概率。
(1 - p)^(n - k)
表示 n - k 次失敗的概率。
生成二項分佈數據
NumPy 提供了 random.binomial()
函數來生成服從二項分佈的隨機數。該函數接受以下參數:
n
:試驗次數。
p
:每次試驗中成功事件發生的概率。
size
:輸出數組的形狀。
示例:生成 10 次試驗中,每次成功概率為 0.5 的事件的成功次數:
import numpy as np
data = np.random.binomial(n=10, p=0.5, size=10)
print(data)
可視化二項分佈
Seaborn 庫提供了便捷的函數來可視化分佈,包括二項分佈。
示例:繪製 100 次試驗中,每次成功概率為 0.6 的事件的成功次數分佈:
import seaborn as sns
import numpy as np
data = np.random.binomial(n=100, p=0.6, size=1000)
sns.distplot(data)
plt.show()
正態分佈與二項分佈的關係
當試驗次數 n 很大,成功概率 p 接近 0.5 時,二項分佈可以近似為正態分佈。其均值 μ 為 np,標準差 σ 為 sqrt(np(1 - p))。
示例:比較二項分佈和正態分佈的形狀:
import seaborn as sns
import numpy as np
n = 100
p = 0.5
# 生成二項分佈數據
data_binomial = np.random.binomial(n=n, p=p, size=1000)
# 生成正態分佈數據
mu = n p
sigma = np.sqrt(n p (1 - p))
data_normal = np.random.normal(loc=mu, scale=sigma, size=1000)
sns.distplot(data_binomial, label="Binomial")
sns.distplot(data_normal, label="Normal")
plt.legend()
plt.show()
練習
- 在 50 次試驗中,每次成功概率為 0.2 的事件,模擬成功次數並繪製分佈圖。
- 比較不同試驗次數下二項分佈形狀的變化。
- 利用二項分佈來模擬一次 10 道選擇題的考試,每題答對的概率為 0.7,並計算平均分和及格率(60 分及格)。
解決方案
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
# 1. 模擬成功次數並繪製分佈圖
data = np.random.binomial(n=50, p=0.2, size=1000)
sns.distplot(data)
plt.show()
# 2. 比較不同試驗次數下二項分佈形狀的變化
n_values = [10, 50, 100, 500]
for n in n_values:
data = np.random.binomial(n=n, p=0.5, size=1000)
sns.distplot(data, label=f"n={n}")
plt.legend()
plt.show()
# 3. 模擬考試成績並計算平均分和及格率
scores
最後
為了方便其他設備和平臺的小伙伴觀看往期文章:
微信公眾號搜索:Let us Coding
,關註後即可獲取最新文章推送
看完如果覺得有幫助,歡迎點贊、收藏、關註