Python中的機率基礎


機率論研究隨機事件及其結果。它是金融、物理、工程和資料科學等眾多領域中的一個基本概念。它被定義為事件發生的可能性,因為沒有任何事件可以以100%的確定性預測。因此,機率只是一個指導。在本文中,我們將瞭解Python中的機率基礎。Python提供許多庫,允許我們處理機率分佈、執行統計計算以及生成隨機數。

在開始使用Python之前,需要了解一些基本的機率概念和關鍵詞:

  • 樣本空間 − 隨機實驗所有可能結果的集合。

  • 事件 − 樣本空間的一個子集,表示隨機實驗的特定結果或一組結果。

  • 機率 − 一個介於0和1之間的數字,表示事件發生的可能性。機率為0表示事件不可能發生,而機率為1表示事件必然發生。

現在我們已經理解了基本術語,讓我們使用Python來實現它們。

生成隨機數

在這裡,我們將瞭解如何在Python中生成隨機數,這需要`random`模組。這個模組提供了幾個函式,如`randint`和`random`,可以幫助我們生成不同型別和資料型別的各種隨機值。

示例

import random

# Generate a random integer number having values between 0 and 100
random_integer = random.randint(0, 100)
print("Random integer:", random_integer)

# Generate a random float number having values between 0 and 1
random_float = random.random()
print("Random float:", random_float)

輸出

Random integer: 89
Random float: 0.16460963462567613

定義樣本空間並計算事件的機率

樣本空間(所有可能結果的集合)定義為一個列表,另一個列表是事件,它是樣本空間的子集。我們的目標是計算事件的機率,即結果數除以樣本空間。

示例

# Define a sample space
sample_space = [1, 2, 3, 4, 5]

# Define an event
event = [1, 2, 3]

# Calculate the probability of the event
probability = len(event) / len(sample_space)
print("Probability of the events occuring is:", probability)

輸出

Probability of the events occuring is: 0.6

計算條件機率

在事件B已經發生的情況下計算事件A的機率稱為條件機率。簡單來說,條件機率用於模擬兩個事件之間的關係。例如,如果您知道外面正在下雨,那麼與您不知道下雨的情況相比,您對帶傘的機率的估計可能會有所不同。

示例

# Define a sample space
sample_space = [1, 2, 3, 4, 5]

# Define events A and B
event_A = [1, 2, 3]
event_B = [2, 3, 4]

# Calculate the joint probability of A and B
joint_probability = len([x for x in event_A if x in event_B]) / len(sample_space)
print("Joint probability of A and B:", joint_probability)

# Calculate the conditional probability of A given B
conditional_probability = joint_probability / (len(event_B) / len(sample_space))
print("Conditional probability of A given B:", conditional_probability)

輸出

Joint probability of A and B: 0.4
Conditional probability of A given B: 0.6666666666666667

計算期望值

隨機變數的期望值是其集中趨勢的度量。它是隨機實驗多次重複的平均結果的估計,例如,當您拋硬幣很多次時,正面和反面的機率是相等的。

示例

# Define a probability distribution
probabilities = [0.2, 0.3, 0.5]
outcomes = [10, 20, 30]

# Calculate the expected value
expected_value = sum([p * x for p, x in zip(probabilities, outcomes)])
print("Expected value:", expected_value)

輸出

Expected value: 23.0

計算在公平骰子上擲出6的機率

一個骰子有6個面,標記為1到6。使用上面解釋的基本知識,我們將計算在公平骰子上擲出6的機率。

示例

import random

def roll_die():
   return random.randint(1, 6)

num_trials = 100000
num_sixes = 0

for i in range(num_trials):
   result = roll_die()
   if result == 6:
      num_sixes += 1

prob_six = num_sixes / num_trials
print("Probability of 6 is:",prob_six)

輸出

Probability of 6 is: 0.1667

輸出將始終接近1/6,因為公平骰子擲出每個數字的機率相等。

計算給定兩個骰子的和為7的情況下,第一個骰子上擲出6的條件機率

在這裡,我們將使用上面解釋的條件機率。我們將計算在知道兩個骰子的和為7的情況下,第一個骰子上擲出6的條件機率。也可以說是在第一個骰子上擲出6的機率,給定第二個骰子為1,反之亦然。

示例

def roll_two_dice():
   die1 = random.randint(1, 6)
   die2 = random.randint(1, 6)
   return (die1, die2)

num_trials = 100000
num_six_given_seven = 0
num_seven = 0

for i in range(num_trials):
   result = roll_two_dice()
   if sum(result) == 7:
      num_seven += 1
      if result[0] == 6:
         num_six_given_seven += 1

prob_six_given_seven = num_six_given_seven / num_seven
print("The Probability of rolling a 6 on the first die given that the sum of the two dice is 7 is:",prob_six_given_seven)

輸出

The Probability of rolling a 6 on the first die given that the sum of the two dice is 7 is: 0.16626851409460106

結論

Python為我們提供了各種工具和庫,幫助我們處理機率基礎。機率在從AI內容檢測到紙牌遊戲中都有廣泛的應用。`random`模組通常用於與機率相關的題目。結合`numpy`和`scipy`等庫(以及用於視覺化的`matplotlib`和`seaborn`),當資料規模很大且主要以csv檔案形式存在時,這將具有很大的優勢。機率問題可以進一步與統計學結合起來,以獲得更多見解。無論您是初學者還是從業人員,在機率領域總會有更多東西需要學習。

更新於:2023年10月4日

725 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.