假设一个游戏中的一卷20,8面死了,对于总数的8^20可能的结果。计算概率的某一特定事件的发生,我们的分数量的方式,事件的发生可通过8^20.

一个可以计算数量的方式得到正好是5骰子的价值3.(20选择5)给我们的订单数为3。7^15为我们提供了数量方法,我们不能获得价值3为15卷。

number of ways to get exactly 5, 3's = (20 choose 5)*7^15.

答案还可以被看作是如何多种方式我可以重新排列的串3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0(20选择5)次的总数价值观,我们的零(假设7法律价值)7^15(这是正确的)。

  • 问题1:我怎么能计算数量的方式得到正好是5骰子相同价值的(这是,对于所有死值)。注:如果我只是天真地利用我的第一个回答上述和乘bt8日,我获得了大量的双重计算?

    我的理解是,我可以解决每个情况下(5 1)、(5,2)、(5,3),...(5、8)总结(多个简单的8*(5 1)).然后减去总数的重叠(5 1)和(5 2)、(5 1)和(5 3)...(5 1)和(5,2)和...和(5,8)但是,这似乎极其混乱。我要概括这种方式,扩展到大量的采样和大量的课程。

  • 我怎么能计算数量的方式得到 至少 5骰子相同价值?

    所以111110000000000000000或11110100000000000002或11111100000001110000或11011211222222223333,但不00001111222233334444或000511512252363347744.

我在寻找答案,解释本数学或指向一个图书馆,支持本(esp python模块)。额外加分的细节和实例。

有帮助吗?

解决方案

重复计算,可以解决的,使用的 包容/排斥的原则

我怀疑它出来:

Choose(8,1)*P(one set of 5 Xs) 
- Choose(8,2)*P(a set of 5 Xs and a set of 5 Ys) 
+ Choose(8,3)*P(5 Xs, 5 Ys, 5 Zs) 
- Choose(8,4)*P(5 Xs, 5 Ys, 5 Zs, 5 As)

P(set of 5 Xs) = 20 Choose 5 * 7^15 / 8^20
P(5 Xs, 5 Ys) = 20 Choose 5,5 * 6^10 / 8^20

等等。这并不能解决问题直接的超过5相同的',因为如果你只是概括的结果应用到的5,6,7..20;你将随着数情况下,你有说,10 1和5 8。

你也许可以申请列入排除再次到来的第二个答案;因此,第(至少5)=P(一组20)+...+(P(一套的15)-7*P(5 5骰子))+((P(一组14)-7*P(一组5 6)-7*P(一套6从6)).来源代码,证明本身更加困难。

其他提示

我建议你花一点时间编写了蒙特卡罗模拟,并让它运行的话你的工作数学手。希望蒙特卡洛的模拟会收敛之前你完成数学你就可以检查你的解决方案。

一个稍微更快的选项可能涉及建立一个所的克隆用于数学问题。

确切的概率分布Fs,我的笔我s面骰子可以被计算为重复的卷积单死亡概率分布与本身。

alt text

哪里 alt text 对所有 alt text 否则为0。

http://en.wikipedia.org/wiki/Dice

这个问题真的很难,如果你有一概而论它(获得准确的公式).

但不管怎么说,让我解释给你听的算法。如果你想知道的

该数量的方式得到正好是5 骰子的相同的价值

你必须要改变措辞你以前的问题,

计算数量的方式得到 正好是5骰子的价值的3和没有 其他值可以完全重复5 时间

为了简单起见,我们呼功能F(20,8,5)(5骰子,所有值)的第一个答案,和F(20,8,5,3)(5骰子,值3)。我们F(20,8,5)=F(20,8,5,3)*8+ (活动时超过一个价值是重复的5倍)

因此,如果我们可以得到F(20,8,5,3)它应该很简单,不是吗?嗯...没有那么多...

首先,让我们确定了一些变量:X1,X2,X3...西里西=数量的时候,我们让骰子我

然后:

F(20,8,5)/20^8 = P(X1=5 or X2=5 or ... or X8=5, with R=20(rolls) and N=8(dice number))

, P(声明)的标准的方式编写一个概率。

我们继续:

F(20,8,5,3)/20^8 = P(X3=5 and X1<>5 and ... and X8<>5, R=20, N=8) 
F(20,8,5,3)/20^8 = 1 - P(X1=5 or X2=5 or X4=5 or X5=5 or X6=5 or X7=5 or X8=5, R=15, N=7)  
F(20,8,5,3)/20^8 = 1 - F(15,7,5)/7^15

递归:

F(15,8,5) = F(15,7,5,1) * 7  
P(X1=5 or X2=5 or X4=5 or X5=5 or X6=5 or X7=5 or X8=5, R=15, N=7) = P(X1=5 and X2<>5 and X4<>5 and .. and X8<>5. R=15, N=7) * 7

F(15,7,5,1)/7^15 = 1 - F(10,6,5)/6^10 F(10,6,5) = F(10,6,5,2) * 6

F(10,6,5,2)/6^10 = 1 - F(5,5,5)/5^5
F(5,5,5) = F(5,5,5,4) * 5

好吧然后...F(5,5,5,4)是数量的方式得到5骰子的价值的4在5卷,例如没有其他的骰子重复的5倍。只有1种方式,在总共5^5.概率然后1/5^5.

F(5,5,5)是数量的方式得到5骰子的任何价值(5值)的5卷。这显然是5.概率然后5/5^5=1/5号^4.

F(10,6,5,2)是数量的方式得到5骰子的价值2在10卷,例如没有其他的骰子重复的5倍。F(10,6,5,2)=(1-F(5,5,5)/5^5) * 6^10 = (1-1/5^4) * 6^10

嗯...我觉得它可能是不正确的一些部分,但无论如何,你的想法。我希望我可以做的算法可以理解的。

编辑: 我做了一些检查,而我意识到你必须添加一些情况下,当你得到多于一个值完全重复的5倍。没有时间解决这部分你...

这里是什么,我想...

如果你只有5个骰子,你将仅有八种方式得到你想要什么。

对于每个这八个方面,所有可能的组合的其他15个骰子的工作。

所以我觉得答案是:(8*815) / 820

(答复为至少5个相同。)

我相信你可以使用的公式x发生在n活动为:

P=概率^n*(n!/((n-x)!x!))

所以最终结果将是总结的结果,从0到正。

我真的不见任何简单的方法相结合为一个步骤,就会少一些凌乱。这样,你有式阐明了代码。你可能得写自己的因素的方法。

  float calculateProbability(int tosses, int atLeastNumber) {
    float atLeastProbability = 0;
    float eventProbability = Math.pow( 1.0/8.0, tosses);
    int nFactorial = factorial(tosses);

    for ( i = 1; i <= atLeastNumber; i++) {
      atLeastProbability += eventProbability * (nFactorial / (factorial(tosses - i) * factorial(i) );
    }
  }

递归的解决方案:

Prob_same_value(n) = Prob_same_value(n-1) * (1 - Prob_noone_rolling_that_value(N-(n-1)))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top