You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Python代码计算不放回抽取2红3绿弹珠的概率?

模拟计算抽取2红3绿弹珠的概率

已知袋子中有10个红色弹珠(编号21-30)和20个绿色弹珠(编号1-20),采用不放回方式抽取5个弹珠,我们可以通过蒙特卡洛模拟来计算抽到2红3绿的概率。

原代码逻辑回顾

你提供的全同色概率计算代码,是通过给弹珠编号(1-20为绿,21-30为红),每次随机抽取5个编号后,判断是否全绿(所有编号≤20)或全红(所有编号>20),最后用符合条件的次数除以总试验次数得到概率。

修改后的代码(计算2红3绿概率)

我们只需要调整判断条件:统计每次抽取中红色弹珠(编号>20)的数量是否为2,即可对应2红3绿的情况:

import random
random.seed(42)

total = 0
trials = 10000

for _ in range(trials):
    draw = random.sample(range(1, 31), 5)
    # 统计红色弹珠数量(编号>20的个数)
    red_count = sum(1 for num in draw if num > 20)
    if red_count == 2:
        total += 1

print(total / trials)

代码说明

  • sum(1 for num in draw if num > 20):遍历抽取的5个编号,统计其中大于20的数量(即红色弹珠个数)
  • 判断red_count == 2:如果红色弹珠恰好是2个,那么绿色弹珠必然是3个,符合我们要统计的情况
  • 最终total/trials就是模拟得到的概率

补充:精确数学计算(可选)

如果需要精确值,可以用组合数公式计算:

概率 = (C(10,2) * C(20,3)) / C(30,5)

其中:

  • C(n,k)表示从n个元素中选k个的组合数
  • C(10,2)是选2个红弹珠的方式数,C(20,3)是选3个绿弹珠的方式数,C(30,5)是从30个弹珠中选5个的总方式数

内容的提问来源于stack exchange,提问作者user21160621

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:00:16