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

n个6面公平骰子求和随机变量的精确概率分布问询

精确计算n个6面骰子点数和的概率分布

当然有!完全不需要依赖中心极限定理这类近似方法,我们有两种非常直接的精确计算方式,能给出每个可能取值的精确概率,下面给你详细拆解:

卷积递推法

每个6面骰子的概率质量函数(PMF)是完全独立的:单个骰子掷出点数k(1≤k≤6)的概率都是1/6,其他情况为0。n个骰子的点数和的PMF,本质上就是单个骰子PMF的n次卷积。

我们可以用递推的方式一步步计算:

  • 定义f_n(s)为n个骰子点数和为s的概率
  • 基础情况:当n=1时,f_1(s) = 1/6(如果1≤s≤6),否则f_1(s)=0
  • 递推公式:对于n>1,f_n(s) = sum_{k=max(1, s-6)}^{min(6, s-(n-1))} f_{n-1}(s - k) * 1/6
    • 这里的上下限是为了保证s-k是n-1个骰子能达到的点数范围(n-1 ≤ s-k ≤ 6(n-1))

这种方法非常适合用代码实现,比如用动态规划的思路,从n=1开始逐步计算到你需要的n,每一步都能得到精确的概率值。

生成函数+容斥公式法

我们可以用生成函数来推导直接计算概率的公式,避免递推的过程。

单个骰子的生成函数是:

G(x) = (x + x² + x³ + x⁴ + x⁵ + x⁶)/6 = x(1 - x⁶)/(6(1 - x))

n个骰子的生成函数就是[G(x)]ⁿ,而点数和为s的概率就是这个多项式展开后x^s项的系数。通过展开生成函数并结合容斥原理,我们可以得到直接计算f_n(s)的公式:

f_n(s) = (1/6ⁿ) * sum_{k=0}^floor((s-n)/6)} (-1)^k * C(n, k) * C(s - 1 - 6k, n - 1)

其中:

  • C(a, b)是组合数(从a个元素中选b个的组合数),当a < b或者a < 0时,组合数取值为0
  • floor((s-n)/6)是取(s-n)/6的整数部分,确保求和项都是有效的

举个小例子验证:当n=2,s=7时,代入公式:

  • floor((7-2)/6) = floor(5/6) = 0,所以求和只有k=0这一项
  • 计算得:(1/36) * (-1)^0 * C(2,0) * C(7-1-0, 2-1) = (1/36)*1*1*6 = 6/36 = 1/6,和实际情况完全一致。

这两种方法都是完全精确的,不会有任何近似误差,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:13:06