我将展示一种在 R 的帮助下以代数方式执行此操作的方法。假设不同的骰子具有由向量给出的概率分布
P(X=i)=p(i)
在哪里X是掷骰子时看到的眼睛数量,以及i是范围内的整数0,1,…,n. 所以两只眼睛的概率,比如说,在第三个向量分量中。然后一个标准骰子的分布由向量给出(0,1/6,1/6,1/6,1/6,1/6,1/6). 概率生成函数 (pgf) 由下式给出p(t)=∑60p(i)ti. 让第二个骰子具有向量给出的分布q(j)在范围内。给出的两个独立掷骰子上眼睛总和的分布。写出我们可以看到它是由系数序列的卷积给出的,因此可以通过 R 函数 convolve() 找到。让我们用两次标准骰子来测试一下:j0,1,…,mp(t)q(t)
> p <- q <- c(0, rep(1/6,6))
> pq <- convolve(p,rev(q),type="open")
> zapsmall(pq)
[1] 0.00000000 0.00000000 0.02777778 0.05555556 0.08333333 0.11111111
[7] 0.13888889 0.16666667 0.13888889 0.11111111 0.08333333 0.05555556
[13] 0.02777778
您可以检查它是否正确(通过手工计算)。现在对于真正的问题,五个骰子有 4、6、8、12、20 面。我会假设每个骰子的概率是一致的。然后:
> p1 <- c(0,rep(1/4,4))
> p2 <- c(0,rep(1/6,6))
> p3 <- c(0,rep(1/8,8))
> p4 <- c(0, rep(1/12,12))
> p5 <- c(0, rep(1/20,20))
> s2 <- convolve(p1,rev(p2),type="open")
> s3 <- convolve(s2,rev(p3),type="open")
> s4 <- convolve(s3,rev(p4),type="open")
> s5 <- convolve(s4, rev(p5), type="open")
> sum(s5)
[1] 1
> zapsmall(s5)
[1] 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00002170
[7] 0.00010851 0.00032552 0.00075955 0.00149740 0.00262587 0.00421007
[13] 0.00629340 0.00887587 0.01191406 0.01534288 0.01907552 0.02300347
[19] 0.02699653 0.03092448 0.03465712 0.03808594 0.04112413 0.04370660
[25] 0.04578993 0.04735243 0.04839410 0.04891493 0.04891493 0.04839410
[31] 0.04735243 0.04578993 0.04370660 0.04112413 0.03808594 0.03465712
[37] 0.03092448 0.02699653 0.02300347 0.01907552 0.01534288 0.01191406
[43] 0.00887587 0.00629340 0.00421007 0.00262587 0.00149740 0.00075955
[49] 0.00032552 0.00010851 0.00002170
> plot(0:50,zapsmall(s5))
该图如下所示:
现在您可以将这个精确的解决方案与模拟进行比较。