【发布时间】:2013-12-24 04:31:13
【问题描述】:
我有这个代码sn-p:
Random rand = new Random();
int chance = rand.Next(1, 101);
if (chance <= 25) // probability of 25%
{
Console.WriteLine("You win");
}
else
{
Console.WriteLine("You lose");
}
我的问题是,这里真的计算出 25% 的获胜概率吗? 难道这里的玩家获胜的几率真的是25%?
编辑:
我刚刚写了这个:
double total = 0;
double prob = 0;
Random rnd = new Random();
for (int i = 0; i < 100; i++)
{
double chance = rnd.Next(1, 101);
if (chance <= 25) prob++;
total++;
}
Console.WriteLine(prob / total);
Console.ReadKey();
而且它非常不准确。它从大约 0.15 到 0.3。
但是当我进行更多检查(从 (i
这是为什么?为什么 100 次检查还不够准确?
【问题讨论】:
-
是的,如果 rand 给出随机值的正态分布。
-
@Vlad 我认为您的意思是统一分布。正态分布是高斯分布。
-
你说得对,我的意思是一回事,写的又是另一回事。谢谢。
-
如果你掷骰子 6 次,如果你得到一个数字的 2 或 3 个而不是每个数字 1 个,你会说它“非常不准确”吗?
-
变量 total 服从 p=0.25 的二项分布。因此,100 次试验的总标准偏差为 sqrt(25) = 5。因此,使用正态近似值,您只会期望约 66% 的测试在区间 20
标签: c# probability percentage