41个回答含有被封锁的答案1个

一个骰子可以模拟出概率为1/7的结果吗?

随便起一个

提供一个不用舍弃任何结果、且每掷一次就试验一次的方法。

nn 次掷骰子时,获得 [1,6]\left[ 1, 6 \right] 范围内的一个随机整数 rr,记 Sn=Sn1+rS_{n}=S_{n-1}+r(令 S0=0S_{0}=0)。如果 SnS_{n} 除以 77 的余数为 00,则认为事件发生。

改进: Sn=Sn1+Kr+BS_{n}=S_{n-1}+K\cdot r+B ,其中 KKBB 是常数。通过恰当地设置这两个常数,可避免已知上一次发生可推导下一次必然不发生,以及首次必然不发生的问题。

理论解释:虽然看起来每次试验都跟上一次试验相关,但由于存在掷骰子这个随机行为,所以结果仍然是随机的。


下面是一个模拟程序,测试这个方法的效果。

int N = 100_000_000;
int K = 2;
int B = 5;
long S = 0;
int c = 0;
for (int n = 1; n <= N; n++)
{
    S += K * Random.Shared.Next(1, 7) + B;
    if (S % 7 == 0) c++;
}
Console.WriteLine(c / (double)N);

运行 3 次结果为:0.14285887,0.14274658,0.1428576。(1 / 7 = 0.142857)

编辑于 2023-11-14 22:46・IP 属地四川
YY-GamePlayer
自由评论 (0)
分享
Copyright © 2022 GreatFire.org