Python 中概率的基础

pythonserver side programmingprogramming

概率涉及对随机事件及其结果的研究。它是金融、物理、工程和数据科学等各个领域的重要概念。它被定义为事件发生的可能性,因为没有事件可以 100% 确定地预测。因此,概率只是一个指南。在本文中,我们将了解 Python 中概率的基础。Python 提供了许多库,允许我们使用概率分布、执行统计计算以及生成随机数。

在开始使用 Python 之前,我们需要了解概率的基本概念和关键字:

  • 样本空间 - 随机实验的所有可能结果的集合。

  • 事件 - 样本空间的子集,代表随机实验的特定结果或一组结果。

  • 概率 - 介于 0 和 1 之间的数字,表示事件发生的可能性。概率 0 表示事件不可能发生,而概率 1 表示事件肯定会发生。

现在我们已经了解了基本术语,让我们使用 Python 来实现它们。

生成随机数

在这里,我们将了解如何在 Python 中生成随机数,为此我们需要随机模块。该模块提供了几个函数,如 randint 和 random,帮助我们生成不同数据类型的不同随机值。

示例

import random

# 生成一个值在 0 到 100 之间的随机整数
random_integer = random.randint(0, 100)
print("随机整数:", random_integer)

# 生成一个值在 0 到 1 之间的随机浮点数
random_float = random.random()
print("随机浮点:", random_float)

输出

随机整数:89
随机浮点数:0.16460963462567613

定义样本空间和计算事件的概率

样本空间是所有可能结果的集合,被定义为一个列表,另一个列表是一个事件,是样本空间的子集。我们的目标是计算结果数除以样本空间的事件的概率。

示例

# 定义样本空间
sample_space = [1, 2, 3, 4, 5]

# 定义事件
event = [1, 2, 3]

# 计算事件的概率
probability = len(event) / len(sample_space)
print("事件发生的概率为:", probability)

输出

事件发生的概率为:0.6

计算条件概率

在事件 B 已经发生的情况下计算事件 A 的概率称为条件概率。简单来说,条件概率用于模拟两个事件之间的关系。例如,如果您知道外面正在下雨,那么您对带伞的概率的估计可能会与不知道下雨时不同。

示例

# 定义样本空间
sample_space = [1, 2, 3, 4, 5]

# 定义事件 A 和 B
event_A = [1, 2, 3]
event_B = [2, 3, 4]

# 计算 A 和 B 的联合概率
joint_probability = len([x for x in event_A if x in event_B]) / len(sample_space)
print("Jo int probability of A and B:", joint_probability)

# 计算 A 在 B 条件下的条件概率
conditional_probability = joint_probability / (len(event_B) / len(sample_space))
print("A 在 B 条件下的条件概率:", conditional_probability)

输出

A 和 B 的联合概率:0.4
A 在 B 条件下的条件概率:0.666666666666667

计算期望值

随机变量的期望值是其集中趋势的度量。它是对随机实验多次重复的平均结果的估计,例如当你抛硬币次数过多时,正面和反面的概率是相等的。

示例

# 定义概率分布
probabilities = [0.2, 0.3, 0.5]
outcomes = [10, 20, 30]

# 计算预期值
expected_value = sum([p * x for p, x in zip(probabilities, outcomes)])
print("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 的条件概率

这里我们将利用上面解释的条件概率。我们将计算第一个骰子掷出 6 的条件概率,假设两个骰子的总和为 7。它也可以表示为,假设骰子 2 为 1,骰子 1 掷出 6 的概率,反之亦然。

示例

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 内容检测到纸牌游戏,概率具有广泛的用例。随机模块通常用于与概率相关的问题陈述。当数据规模庞大且主要为 csv 文件形式时,将其与 numpy 和 scipy 等库(以及用于可视化的 matplotlib 和 seaborn)相结合可以发挥巨大优势。概率问题陈述可以进一步与统计数据结合起来以获得更多见解。无论您是初学者还是从业者,在概率领域总会有更多东西需要发现。


相关文章


有用资源