AI数学启蒙:100天Python实践计划 - 第12天 简单概率 可能性大小001篇

文章目录

      • AI数学启蒙:100天Python实践计划 - 第12天
        • 一、概率基础概念
        • 二、Python模拟实验
          • 实验1:抛硬币的概率
          • 实验2:掷骰子的点数分布
        • 三、实际应用:抽奖系统模拟
        • 四、关键知识点总结
        • 五、课后练习

AI数学启蒙:100天Python实践计划 - 第12天

主题:简单概率与可能性大小

今天我们将学习概率的基础知识,并通过Python模拟实验来验证理论概率。以下是详细内容:


一、概率基础概念
  1. 什么是概率?
    概率是衡量某事件发生可能性的数值,范围在 0(不可能)到 1(必然)之间。
    公式
    P ( A ) = 事件A发生的可能结果数 所有可能结果的总数 P(A) = \frac{\text{事件A发生的可能结果数}}{\text{所有可能结果的总数}} P(A)=所有可能结果的总数事件A发生的可能结果数

  2. 样本空间与事件

    • 样本空间 (S):所有可能结果的集合。
      例如:抛一枚硬币的样本空间是 {正面, 反面}
    • 事件 (E):样本空间的子集。
      例如:抛硬币得到正面是事件 {正面}
  3. 常见概率场景

    • 独立事件:事件A的发生不影响事件B(如连续抛硬币)。
    • 互斥事件:事件A和事件B不能同时发生(如掷骰子得到1和2)。

二、Python模拟实验
实验1:抛硬币的概率

目标:验证抛硬币正面朝上的概率接近理论值 0.5

import random

def flip_coin(n_trials):
    heads = 0
    for _ in range(n_trials):
        result = random.choice(["正面", "反面"])
        if result == "正面":
            heads += 1
    probability = heads / n_trials
    return probability

# 模拟10000次抛硬币
n = 10000
print(f"正面概率: {flip_coin(n):.4f}")

输出示例

正面概率: 0.4987

实验2:掷骰子的点数分布

目标:统计两个骰子点数之和的概率分布。

import matplotlib.pyplot as plt

def roll_dice(n_rolls):
    sums = []
    for _ in range(n_rolls):
        dice1 = random.randint(1, 6)
        dice2 = random.randint(1, 6)
        sums.append(dice1 + dice2)
    return sums

# 模拟10000次掷骰子
n = 10000
results = roll_dice(n)

# 绘制点数之和的频率分布
plt.hist(results, bins=range(2, 14), edgecolor='black', density=True)
plt.title("两个骰子点数之和的分布")
plt.xlabel("点数之和")
plt.ylabel("概率")
plt.show()

输出图表


三、实际应用:抽奖系统模拟

问题:一个箱子里有100张奖券,其中10张是中奖券。模拟抽10次(不放回),计算中奖概率。

import random

def lottery_simulation():
    tickets = list(range(1, 101))  # 100张奖券
    winning_tickets = set(random.sample(tickets, 10))  # 随机10张中奖券
    
    # 模拟抽10次不放回
    drawn = set()
    for _ in range(10):
        ticket = random.choice(tickets)
        drawn.add(ticket)
        tickets.remove(ticket)
    
    # 计算中奖次数
    wins = len(drawn & winning_tickets)
    return wins > 0  # 是否至少中一次奖

# 模拟10000次抽奖
n_simulations = 10000
success = sum(lottery_simulation() for _ in range(n_simulations))
print(f"中奖概率: {success / n_simulations:.4f}")

输出示例

中奖概率: 0.6513

四、关键知识点总结
  1. 理论概率 vs 实验概率
    • 理论概率通过公式计算,实验概率通过模拟或实验得出。
  2. 大数定律
    当实验次数足够多时,实验概率会趋近于理论概率。
  3. 应用场景
    概率可用于风险评估、游戏设计、机器学习中的不确定性建模等。

五、课后练习
  1. 模拟掷骰子:编写代码模拟掷两个骰子1000次,绘制点数之和的概率分布图。
  2. 概率问题:从一副扑克牌中随机抽取一张,求抽到红桃A的概率是多少?用代码验证。

答案示例

# 练习1答案(参考)
import matplotlib.pyplot as plt

results = [random.randint(1,6)+random.randint(1,6) for _ in range(1000)]
plt.hist(results, bins=range(2,13), density=True)
plt.show()

通过今天的学习,你可以用Python验证概率理论,并解决实际问题!明天我们将探索统计与数据分析

你可能感兴趣的:(#,Ai人工智能,人工智能,python,机器学习)