掷骰子的期望数量要求总和大于或等于K?


9

6面模具反复滚动。求和大于或等于K所需的预期卷数是多少?

编辑之前

P(Sum>=1 in exactly 1 roll)=1
P(Sum>=2 in exactly 1 roll)=5/6
P(Sum>=2 in exactly 2 rolls)=1/6
P(Sum>=3 in exactly 1 roll)=5/6
P(Sum>=3 in exactly 2 rolls)=2/6
P(Sum>=3 in exactly 3 rolls)=1/36
P(Sum>=4 in exactly 1 roll)=3/6
P(Sum>=4 in exactly 2 rolls)=3/6
P(Sum>=4 in exactly 3 rolls)=2/36
P(Sum>=4 in exactly 4 rolls)=1/216

编辑后

P(Sum>=1 in atleast 1 roll)=1
P(Sum>=2 in atleast 1 roll)=5/6
P(Sum>=2 in atleast 2 rolls)=1
P(Sum>=3 in atleast 1 roll)=4/6
P(Sum>=3 in atleast 2 rolls)=35/36
P(Sum>=3 in atleast 3 rolls)=1
P(Sum>=4 in atleast 1 roll)=3/6
P(Sum>=4 in atleast 2 rolls)=33/36
P(Sum>=4 in atleast 3 rolls)=212/216
P(Sum>=4 in atleast 4 rolls)=1

我不确定这首先是否正确,但我认为这种可能性与预期的掷骰数有关吗?

但是我不知道该如何进一步。我朝着正确的方向前进吗?


您是如何获得?P(S2 in 2 rolls)
Glen_b-恢复莫妮卡2015年

@Glen_b您必须在第一卷中得到小于2的数字,即1。因此,获得1的概率是1/6,第二卷中可以是任何数字。如果您在第一卷中得到的数字大于或等于2,则不会再进行第二卷。
通常嫌疑人2015年

1
啊,我知道发生了什么事。您不会将其描述为“ P(S \ geq 2 in 2 rolls)”;该表达式表示卷数是固定的。您想要的是“ P(需要2卷才能获得)”或“ P(至少需要2卷才能获得 ”)。小号2S2S2
Glen_b-恢复莫妮卡

@Glen_b是的,那就是混乱。我猜P(正好需要2卷才能使S> 2)。我最终要计算的全部是预期的掷骰数是否大于K?
通常嫌疑人2015年

@Glen_b我应该使用atleast还是完全用于此目的?以及如何计算较大总数(例如10000)的预期卷数?
通常嫌疑人2015年

Answers:


2

到目前为止,基于与我的第一个答案相同的观察结果,这只是用于其他更精确方法的一些想法。随着时间的流逝,我会扩展这个...

首先,一些符号。令为某个给定的正(大)整数。我们希望的分布,这是最低数的抛出一个普通骰子的至少拿到总和。因此,首先我们将定义为掷骰子的结果,并且。如果我们能找到的分布的所有那么我们可以找到的分布通过使用 并且我们完成。Ñ ķ X X Ñ = X 1 + + X Ñ X Ñ ñ ñ P Ñ Ñ = P X 1 + + X Ñķ KNKXiiX(n)=X1++XnX(n)nN

P(Nn)=P(X1++XnK),

现在,对于可能的值是,以及用于在该范围内,找到了概率,我们需要找到将写为正好是整数的和的总数,所有整数都在范围内。但这被称为受限整数组成,这在组合学中已经得到了很好的研究。有关数学SE的一些相关问题, 请访问https://math.stackexchange.com/search?q=integer+compositions Ñ Ñ + 1 Ñ + 2 ... 6 Ñ ķ P X 1 + + X Ñ = ķ ķ Ñ 1 2 ... 6X1++Xnn,n+1,n+2,,6nkP(X1++Xn=k)kn1,2,,6

因此,搜索和研究该组合学文献,我们可以获得安静的精确结果。我将对此进行跟进,但稍后...


2

根据6阶多项式的根有一个简单的封闭式。

实际上,考虑带有标有数字的普通公平模子要容易一些d21,2,,d.

令为等于或超过的预期滚动 对于 否则,期望是一个大于轧辊的数量的期望到达前次值,这将是中从那里ekk.k0, ek=0.kd,kd+1,,k1,

(1)ek=1+1d(ekd+ekd+1++ek1).

线性递归关系的形式为

(2)ek=2kd+1+i=1daiλik

其中是多项式的复数根λid

(3)Td1d(Td1+Td2++T+1).

常数通过将解应用于值其中每种情况。这给出了常数中的线性方程组,并且具有唯一的解。通过使用每个根都满足的事实来验证重复可以证明该解决方案有效ai(2)k=(d1),(d2),,1,0ek=0dd(1)(3):

1+1dj=1dekj=1+1dj=1d(2(kj)d+1+i=1daiλikj)=2kd+1+i=1daiλikd[1d(1+λi++λid1)]=2kd+1+i=1daiλikdλid=2kd+1+i=1daiλik=ek.

这种封闭形式的解决方案为我们提供了一种近似答案以及准确评估答案的好方法。 (对于中小值直接应用递归是一种有效的计算技术。)例如,对于我们可以轻松地进行计算k,d=6

e1000000=285714.761905

对于近似值,将有一个唯一的最大根因此最终(对于足够大的)项将主导的项误差将根据根的第二最小范数成倍减少。继续该示例,其中的系数为,第二个范数为 (顺便说一下,另一个往往非常接近)因此,我们可以将前一个值近似为λ+=1kλ+kd(2).k=6,λ+a+=0.47619050.7302500.ai1

e10000002×1066+1+0.4761905=285714.761905

误差0.730250010610314368.


为了说明该解决方案的实用性,以下R代码返回一个函数,用于对任何(在双精度浮点计算的范围内)而不是过大的(一旦会停顿),求的值:ekkdd100

die <- function(d, mult=1, cnst=1, start=rep(0,d)) {
  # Create the companion matrix (its eigenvalues are the lambdas).
  X <- matrix(c(0,1,rep(0,d-1)),d,d+1)
  X[, d] <- mult/d
  lambda <- eigen(X[, 1:d], symmetric=FALSE, only.values=TRUE)$values

  # Find the coefficients that agree with the starting values.
  u <- 2*cnst/(d+1)
  a <- solve(t(outer(lambda, 1:d, `^`)), start - u*((1-d):0))

  # This function assumes the starting values are all real numbers.
  f <- Vectorize(function(i) Re(sum(a * lambda ^ (i+d))) + u*i)

  list(f=f, lambda=lambda, a=a, multiplier=mult, offset=cnst)
}

作为其用法的示例,这里它计算对的期望k=1,2,,16:

round(die(6)$f(1:10), 3)

1.000 1.167 1.361 1.588 1.853 2.161 2.522 2.775 3.043 3.324 3.613 3.906 4.197 4.476 4.760 5.046

它返回的对象包括根及其乘数以进行进一步分析。乘法器数组的第一部分是有用系数λiaia+.

(如果您好奇的其他参数是什么die,请执行die(2, 2, 0, c(1,0))$f(1:10)并查看是否可以识别输出;-)。这种概括有助于开发和测试功能。)


+1。函数die给我一个错误:object 'phi' not found
COOLSerdash

1
@COOL感谢您的检查。罪魁祸首是在最后一刻更改了变量名(从phia)以匹配文本。我已经修复(并检查)它。
ub

1

通常,没有办法获得确切的预期滚动数,但是对于K。

令N为预期滚动得到sum => K的事件。

对于K = 1,E(N)= 1

对于K = 2,E(N)=(56+21)/(56+1)=1711

等等。

对于大K,要获得E(N)将非常困难。例如,对于K = 20,您需要期望(4卷,20卷)

中心极限定理在一定程度上会带来更多益处。我们知道发生率是均匀分布的,对于较大的K。K (正态分布)

K(Sum) follows N(3.5N,35N12)

现在,您需要“ N”以使总和至少为K。...我们将其转换为标准正态分布。其中%可以从“标准常规表”得到Z值或从这里例如

K3.5N35N12=Zα
α=1confidenceZ0.01=2.31,Z0.001=2.98

您知道K,Z(有任何误差)........那么通过求解方程式,您可以按一定的置信度%获得N = E(N)。


2
您如何计算这些概率?您是如何得出该E(N)方程的?
通常嫌疑人2015年

@UsualSuspect P(Sum> = 2 in 1 roll)= 5/6(您知道)P(Sum> = 2 in 2 rolls)= 1(因为您必须从2个滚动中获得至少2个和)并且对于E(N ).........这只是预期的平均值
Hemant Rupani 2015年

对不起,我没有提到。它不至少,恰好2卷。我现在了解了E(N)方程。
通常嫌疑人2015年

@UsualSuspect哦!顺便说一句,如果您需要任何特定K的E(N),那么我可以做到:)。
Hemant Rupani 2015年

我需要k = 20和k = 10000。如果您向我解释比直接给出答案要好。
通常嫌疑人2015年

0

我将提供一种方法来找到一个近似的解决方案。首先,让为随机变量,“掷出与骰子的结果”,让为达到至少的总和所需的掷。然后,我们有 以便找到的分布我们需要找到的分布的卷积对于,对于所有。这些卷积可以通过数值找到,但是对于大XiiNk

P(Nn)=P(X1+X2++Xnk)
NXii=1,2,,nnn可能需要做很多工作,因此我们尝试使用鞍点方法来估计卷积的累积分布函数。有关鞍点方法的另一个示例,请参见我对Gamma随机变量的一般和的回答

对于离散情况,我们将使用Lugannini-Rice逼近,并遵循R Butler:“具有应用程序的鞍点逼近”,第18页(第二个连续性校正)。首先,我们需要的矩生成函数,即 然后,独立骰子之和的累积量生成函数变为 ,我们还需要的前几个导数,但我们将使用R象征性地找到它们。代码如下:Xi

M(T)=EetXi=16(et+e2t+e3t+e4t+e5t+e6t)
n
Kn(t)=nlog(16i=16eit)
K

 DD <- function(expr, name, order = 1) {
        if(order < 1) stop("'order' must be >= 1")
        if(order == 1) D(expr, name)
        else DD(D(expr, name), name, order - 1)
     }

make_cumgenfun  <-  function() {
    fun0  <-  function(n, t) n*log(mean(exp((1:6)*t)))
    fun1  <-  function(n, t) {}
    fun2  <-  function(n, t) {}
    fun3  <-  function(n, t) {}
    d1  <-  DD(expression(n*log((1/6)*(exp(t)+exp(2*t)+exp(3*t)+exp(4*t)+exp(5*t)+exp(6*t)))),  "t", 1)
    d2  <-  DD(expression(n*log((1/6)*(exp(t)+exp(2*t)+exp(3*t)+exp(4*t)+exp(5*t)+exp(6*t)))),  "t", 2)
    d3  <-  DD(expression(n*log((1/6)*(exp(t)+exp(2*t)+exp(3*t)+exp(4*t)+exp(5*t)+exp(6*t)))),  "t", 3)
    body(fun1)  <-  d1
    body(fun2)  <-  d2
    body(fun3)  <-  d3
    return(list(fun0,  fun1,  fun2,  fun3))
}

接下来,我们必须求解鞍点方程。

这是通过以下代码完成的:

funlist  <-  make_cumgenfun()

# To solve the saddlepoint equation for n,  k:
solve_speq  <-   function(n, k)  {# note that n+1 <= k <= 6n is needed
    Kd  <-  function(t) funlist[[2]](n, t)
    k  <-  k-0.5
    uniroot(function(s) Kd(s)-k,  lower=-100,  upper=1,  extendInt="upX")$root
}

请注意,上面的代码不是很健壮,因为值在分布的任一尾部都远,它将无法工作。然后,在第18页的巴特勒之后,通过Luganini-Rice近似近似地实际计算尾部概率函数的一些代码(第二个连续性校正):k

返回尾部概率的函数:

Ghelp  <-  function(n, k) {
    stilde  <-  solve_speq(n, k)
    K  <-  function(t) funlist[[1]](n, t)
    Kd <-  function(t) funlist[[2]](n, t)
    Kdd <- function(t) funlist[[3]](n, t)
    Kddd <- function(t) funlist[[4]](n, t)
    w2tilde  <-  sign(stilde)*sqrt(2*(stilde*(k-0.5)-K(stilde)))  
    u2tilde  <-  2*sinh(stilde/2)*sqrt(Kdd(stilde))
    mu  <-  Kd(0)
    result  <- if (abs(mu-(k-0.5)) <= 0.001) 0.5-Kddd(0)/(6*sqrt(2*pi)*Kdd(0)^(3/2))  else
    1-pnorm(w2tilde)-dnorm(w2tilde)*(1/w2tilde - 1/u2tilde)
    return(result)
}
G  <- function(n, k) {
      fun  <- function(k) Ghelp(n, k)
      Vectorize(fun)(k)
  }

然后让我们尝试根据公式来计算分布表 其中是上述R代码的函数。

P(Nn)=P(X1+X2++Xnk)=1P(X1++Xnk+1)=1G(n,k+1)
G

现在,让我们用回答原始问题。那么最小卷数为4,最大卷数为20。需要20卷的概率非常小,可以根据二项式公式精确计算,我留给读者看。(上述近似值不适用于)。K=20n=20

因此的概率近似为N19

> 1-G(20, 21)
[1] 2.220446e-16

的概率近似为:N10

> 1-G(10, 21)
[1] 0.002880649

等等。使用所有这些,您可以自己获得期望的近似值。这应该比基于中心极限定理的近似要好得多。

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.