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

使用Python random.sample函数模拟掷骰子的概率异常问题

问题分析与解决
  • 错误根源:你使用的random.sample(range(1, 7), 2)是无放回抽样,会强制两个骰子的点数完全不同,但真实掷两个骰子的场景中,两个骰子是独立的,允许出现相同点数(比如两个1、两个2等),这直接导致了概率偏差。

  • 概率验证:

    • 真实场景下,两个骰子共有6×6=36种等可能结果,其中和为偶数的情况有18种(两个奇数组合9种、两个偶数组合9种),概率为18/36=0.5。
    • 无放回抽样的场景下,总共有6×5=30种等可能结果,和为偶数的情况仅12种(3个奇数中选2个的排列6种、3个偶数中选2个的排列6种),12/30=0.4,正好对应你看到的结果。
  • 修正后的代码:
    改为独立生成每个骰子的点数,确保符合真实场景:

    import random
    
    n = 10**5
    outcomes = [(random.randint(1, 6), random.randint(1, 6)) for _ in range(n)]
    even_sum_count = sum([sum(x) % 2 == 0 for x in outcomes])
    relative_frequencies = [(sum([x[0] == i for x in outcomes])/n, sum([x[1] == i for x in outcomes])/n) for i in range(1, 7)]
    
    print(even_sum_count/n)
    print(relative_frequencies)
    

    运行后结果会接近0.5,符合理论预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:07:05