当前位置:首页>python>Python赋能数学学习2: 抽奖”再来一瓶“,到底买多少瓶才能中一次奖,背后的几何分布奥秘到底是什么

Python赋能数学学习2: 抽奖”再来一瓶“,到底买多少瓶才能中一次奖,背后的几何分布奥秘到底是什么

  • 2026-10-11 07:45:20
Python赋能数学学习2: 抽奖”再来一瓶“,到底买多少瓶才能中一次奖,背后的几何分布奥秘到底是什么

抽奖”再来一瓶“,到底买多少瓶才能中一次奖,背后的几何分布奥秘到底是什么

一、故事内容

小明去商店买饮料,瓶盖上有“再来一瓶”活动。

商家宣传:中奖率 15%。

小明就想:

  1. 中一次奖,需要买多少瓶
  2. 如果连续买n多瓶,至少中 1 次的概率到底有多大?
  3. 用 Python 模拟,多次实验,看看实际情况和理论分析是否一致?

这就是一个典型的概率 + 编程模拟问题。

二、对应的数学知识

1. 单次中奖概率

设每次买 1 瓶,中奖概率为:

不中奖概率为:

2. 买 n 瓶,至少中 1 次的概率

“至少中 1 次”更容易用反面事件计算:

  • 反面事件:n 瓶都没中
  • 概率:

所以:

至少中次

例如:

  • 买 1 瓶:(15%)
  • 买 5 瓶:(约 55.63%)
  • 买 10 瓶:(约 80.31%)

3. 平均要买多少瓶才能中 1 次

这是几何分布的期望值:

含义:长期平均来看,大约买 6 到 7 瓶会中 1 次。

注意:

  • 这不是说“第 7 瓶一定中”
  • 只是大量重复实验后的平均值

三、数学建模

问题分析

  1. 输入:中奖率 p(这里是 0.15)
  2. 输出:
    • 理论上买 n 瓶至少中 1 次的概率
    • 单次实验“直到中奖”需要购买的瓶数
    • 重复多次实验后的平均购买瓶数

模型步骤

  1. 如何模拟中奖率

    • 使用 random.random() 生成 [0, 1) 的随机数
    • 若随机数 < 0.15,视为中奖
  2. 单次循环抽奖,直到中奖

    • 设 count = 0
    • 循环:每抽一次 count += 1
    • 若中奖则停止,返回 count
  3. 循环 10 次,统计每次抽奖次数并求平均

    • 重复抽单次中奖过程,循环 10 次
    • 记录每次所需抽奖次数
    • 计算平均值

四、Python 代码实现

import randomdef 抽奖(p=0.15):"""    单次抽奖:返回是否中奖    """return random.random() < pdef 抽到一次奖(p=0.15):"""    单次实验:不断购买,直到第一次中奖    返回购买瓶数    """    count = 0whileTrue:        count += 1if 抽奖(p):return countdef 模拟抽10次(times=10, p=0.15):"""    重复 trials 次“直到中奖”实验    返回每次结果和平均购买瓶数    """    results = []for _ in range(times):        results.append(抽到一次奖(p))    average = sum(results) / len(results)return results, averageif __name__ == "__main__":    p = 0.15    print("=" * 50)    print("再来一瓶中奖率分析")    print("=" * 50)    print("\n一、模拟实验(循环 10 次,每次直到中奖)")    results, avg = 模拟抽10次(times=10, p=p)for i in range(len(results)):        print(f"第 {i+1}次:买了 {results[i]:3d} 瓶才中奖")    print(f"10次平均购买瓶数:{avg:.2f}")    print("\n说明:")    print("- 理想平均中奖间隔 = 6.67 次(理论值)")    print(f"- 模拟实验的结果是 {avg:.2f} 次(平均值)")    print(f" 如果模拟次数无限大的时候,平均值会趋近于理论值 {1/p:.2f} 次")

五、示例输出(每次运行会略有不同)

==================================================再来一瓶中奖率分析==================================================一、模拟实验(循环 10 次,每次直到中奖)第 1次:买了   2 瓶才中奖第 2次:买了   3 瓶才中奖第 3次:买了  17 瓶才中奖第 4次:买了  22 瓶才中奖第 5次:买了  12 瓶才中奖第 6次:买了  14 瓶才中奖第 7次:买了   5 瓶才中奖第 8次:买了  19 瓶才中奖第 9次:买了  14 瓶才中奖第 10次:买了   3 瓶才中奖10次平均购买瓶数:11.10说明:- 理想平均中奖间隔 = 6.67 次(理论值)- 模拟实验的结果是 11.10 次(平均值) 如果模拟次数无限大的时候,平均值会趋近于理论值 6.67 次

六、总结

  • 15% 的中奖率意味着平均每 6.67 瓶会中一次奖,但实际情况可能会有较大波动。

最新文章

随机文章