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 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告