辊A 6面骰子直到总。超出平均数量?


11

这是问题:

您反复滚动一个6面骰子,直到掷骰子的总和大于或等于M。当M = 300时,总和减去M的平均值和标准偏差是多少?

我是否应该编写代码来回答此类问题?

请给我一些提示。谢谢!


1
请添加[self-study]标签并阅读其Wiki。然后告诉我们您到目前为止所了解的内容,尝试过的内容以及遇到的困难。我们将提供提示,以帮助您避免卡住。
gung-恢复莫妮卡

2
我怀疑可以读作“很大的 ”,因为我相信或会得到几乎完全相同的结果。我要做的是找到总和减去的分布。M=300MM=301M=999M
亨利

Answers:


13

您当然可以使用代码,但是我不会模拟。

我将忽略“减M”部分(最后可以很容易地做到这一点)。

您可以很容易地递归计算概率,但是可以通过简单的推理来计算实际答案(非常准确)。

让卷是。令。S t = t i = 1 X iX1,X2,...St=i=1tXi

令是的最小索引。小号τ中号τSτM

P(Sτ=M)=P(got to M6 at τ1 and rolled a 6)+P(got to M5 at τ1 and rolled a 5)++P(got to M1 at τ1 and rolled a 1)=16j=16P(Sτ1=Mj)

在此处输入图片说明

类似地

P(Sτ=M+1)=16j=15P(Sτ1=Mj)

P(Sτ=M+2)=16j=14P(Sτ1=Mj)

P(Sτ=M+3)=16j=13P(Sτ1=Mj)

P(Sτ=M+4)=16j=12P(Sτ1=Mj)

P(Sτ=M+5)=16P(Sτ1=M1)

然后,可以(至少在原则上)类似于上面第一个方程式运行,直到您遇到任何初始条件,以获得初始条件和我们想要的概率之间的代数关系(这将是乏味的,不会特别启迪) ,或者您可以构造相应的正向方程并从初始条件开始向前运行,这很容易通过数字进行(这也是我检查答案的方式)。但是,我们可以避免所有这些情况。

这些点的概率是先前概率的加权平均值;这些将(在几何上快速)消除初始分布的任何概率变化(对于我们的问题,所有概率都在零点处)。的

近似(非常准确的一个),我们可以说在时间(非常接近)时,到的几率几乎相等,因此从上面我们可以写下概率将非常接近简单比率,并且由于必须将它们标准化,因此我们可以写下概率。M6M1τ1

就是说,我们可以看到,如果从到的概率完全相等,则有6种相同的可能性到达,5种到达,依此类推。到达 1种方式。M6M1MM+1M+5

也就是说,概率之比为6:5:4:3:2:1,并且总和为1,因此写下来很简单。

计算它到底(达到累积数值舍入误差)由零运行的概率递归(我这样做是在R)前给出的顺序上的差异.Machine$double.eps(我的机器上),从上述近似(这是说,沿着上述思路进行简单推理就可以有效地给出准确答案,因为它们与从递归计算得出的答案一样接近我们期望的确切答案。2.22e-16

这是我的代码(大部分只是初始化变量,工作全都在一行中)。该代码在第一轮滚动后开始(为节省我放入单元格0,这对于R中的处理是一个小麻烦);在每个步骤中,它占用的是可能占据的最低单元,并通过模具辊向前移动(将该单元的概率扩展到接下来的6个单元中):

 p = array(data = 0, dim = 305)
 d6 = rep(1/6,6)
 i6 = 1:6
 p[i6] = d6
 for (i in 1:299) p[i+i6] = p[i+i6] + p[i]*d6

(我们可以使用rollapply(from zoo)来更有效地执行此操作-或其他许多此类功能-但如果我将其保持明确,则翻译起来会更容易)

请注意,这d6是一个介于1到6之间的离散概率函数,因此最后一行循环内的代码正在构造较早值的运行加权平均值。正是这种关系使概率趋于平稳(直到我们感兴趣的最后几个值)。

因此,这是前50个值(前25个用圆圈标记的值)。在每个,y轴上的值代表在我们将其向前滚动到接下来的6个像元之前,在最后面的像元中累积的概率。t

在此处输入图片说明

如您所见,它很快就平滑了(平滑到,每个模头滚走的平均步数的倒数)并且保持恒定。1/μ

一旦我们达到,这些概率就会消失(因为我们没有将值的概率依次推到或更高)。MM

在此处输入图片说明

因此,可以清楚地看到这样的想法,即到应该相等,因为可以消除来自初始条件的波动。M1M6

由于推理不依赖任何东西,而是足够大,以至于初始条件被冲走,因此在时间上到几乎相等,因此任何情况下的分布基本相同大,如亨利在评论中建议的那样。MM1M6τ1M

回想起来,亨利的暗示(也在您的问题中)使用负和M会节省一些精力,但是论点会遵循非常相似的思路。您可以通过让并编写将与前面的值相关的类似公式进行操作,依此类推。Rt=StMR0

从概率分布来看,概率的均值和方差就很简单。

编辑:我想我应该给出最终位置减去的渐近均值和标准差:M

渐近平均过量为,标准偏差为。在这比您可能关心的要精确得多。53253M=300


+1在开发出自己的答案之前,我并没有完全理解这个答案,现在看来这是多余的。也许有些读者会在插图和模拟结果中看到价值,所以我会保持开放的态度。
whuber

1
@whuber我的答案比我想要的要少得多,因为我在假设这是家庭作业的情况下进行操作(因此,我避免进行过多的派生操作或提供任何代码-它更倾向于作为概述)。我发现很难清楚地写出关于这个问题的答案(这是具体性比平常更有帮助的答案)。既然您给出了包含实际数字和代码的答案(我肯定认为应该保留该答案),我觉得我可以做一些事情,希望可以使我的答案更易于理解(更明确地讲,给出自己的代码) 。
Glen_b-恢复莫妮卡2015年

几年前,我对这种问题写了一个更好的解释。如果我能记住/弄清楚那是怎么回事,我将尝试在此包括其中的一些内容。
Glen_b-恢复莫妮卡2015年

@Glen_b有点理解方程式。我是新手。如何开始这样思考?您是否可以为此目的推荐任何书籍?您的回复将非常有帮助。
通常嫌疑人2015年

通常的怀疑-我通过想象游戏板像一条漫长的轨迹,然后写“方程式”,“以什么方式我可以以适合问题条件的方式进入这个领域,并且有什么机会?”;我在标记为“ M”的空间中进行过操作,然后在其后的空间中进行了操作,依此类推。我通过想象在起始单元附近并说“如果我在这里,我会在下一个机会吗?”来编写类似的计算代码。这些方程式只是这些问题的答案。
Glen_b-恢复莫妮卡2015年

8

令为骰子部分和的序列集(每个序列都从开始)。对于任何整数,令为出现在序列中的事件;那是,Ω0nEnn

En={ωΩ|nω}.

将定义为中等于或超过的第一个值。该问题要求属性。 我们可以获得的确切分布,并由此得出所有结果。XM(ω)ωMXMMXM

首先,请注意。通过根据紧接的前一个值对事件划分,并令为在一卷骰子上观察面部的概率(),因此X 中号 - 中号= ķ ω p = 1 / 6 = 1 2 3 4 5 6XM(ω)M{0,1,2,3,4,5}XMM=kωp(i)=1/6ii=1,2,3,4,5,6

Pr(XMM=k)=j=k6Pr(EM+kj)p(j)=16j=k6Pr(EM+kj).

在这一点上,我们可以试探性地认为,除了最小的,所有近似值都是这是因为滚动的预期值为并且其倒数应该是中任何特定值的极限,稳定的长期运行频率。M

Pr(Ei)2/7.
(1+2+3+4+5+6)/6=7/2ω

一种证明这一点的严格方法考虑了可能如何发生。要么发生和随后的辊是一个 ; 或发生,随后的掷骰为;或...或发生,随后的掷骰为。这是可能性的详尽划分EiEi11Ei22Ei66

Pr(Ei)=j=16Pr(Eij)p(j)=16j=16Pr(Eij).

该序列的初始值为

Pr(E0)=1;Pr(Ei)=0,i=1,2,3,.

图:E_i图

对于此图显示了机会沉降到常数速度有多快,如水平虚线所示。Pr(Ei)i2/7

这种递归序列有一个标准的理论。它可以通过生成函数,马尔可夫链甚至代数运算来开发。总体结果是存在的闭式公式。Pr(Ei) 这将是常数与多项式根的幂的线性组合ith

x6p(1)x5p(2)x4p(3)x3p(6)=x6(x5+x4+x3+x2+x+1)/6.

这些根的最大量约为。在双精度浮点表示中,本质上为零。因此,对于,我们可以完全忽略除常数以外的所有内容。 该常数是。exp(0.314368)exp(36.05)i36.05/0.314368=1152/7

因此,对于,出于所有实际目的,我们可以考虑,M=300115EM+kj=2/7

Pr(XMM=(0,1,2,3,4,5))=(27)(16)(6,5,4,3,2,1).

计算此分布的均值和方差既简单又容易。


这是一个R模拟,以证实这些结论。它通过生成近100,000个序列,将的值制成表格,并应用测试以评估结果是否与前述一致。p值(在这种情况下)为,足以表明它们是一致的。X 300 - 300 χ 2M+5=305X300300χ20.1367

M <- 300
n.iter <- 1e5
set.seed(17)
n <- ceiling((2/7) * (M + 3*sqrt(M)))
dice <- matrix(ceiling(6*runif(n*n.iter)), n, n.iter)
omega <- apply(dice, 2, cumsum)
omega <- omega[, apply(omega, 2, max) >= M+5]
omega[omega < M] <- NA
x <- apply(omega, 2, min, na.rm=TRUE)
count <- tabulate(x)[0:5+M]
(cbind(count, expected=round((2/7) * (6:1)/6 * length(x), 1)))
chisq.test(count, p=(2/7) * (6:1)/6)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.