【发布时间】:2012-05-14 21:57:24
【问题描述】:
我在这里看到了这个问题:Link
作者提供的解决方案似乎没有产生相同的概率。
例如,在对函数的 10k 次调用中,数字 4 被返回了 1-2 次(而其他数字,如 2,每次返回大约 2k 次)。
可能是我理解错了,或者算法写错了,但是这里:
static int rand5()
{
return new Random().Next(1, 6);
}
static int rand7()
{
while (true)
{
int num = 5 * (rand5() - 1) + rand5();
if (num < 22) return ((num % 7) + 1);
}
}
static void Main(string[] args)
{
int limit = 10000;
int[] scores = new int[7];
for (int i = 0; i < limit; i++)
{
scores[rand7() - 1]++;
}
foreach (int n in scores)
{
Console.Write(n + " ");
}
Console.WriteLine();
}
提前致谢。
【问题讨论】:
标签: c# probability