【发布时间】:2013-06-20 20:47:58
【问题描述】:
我遇到了以下问题:
使用 rand() 函数,生成一个期望值为 k 的数字。选项是:
1)
int GetRandom(int k)
{
v=0;
while(rand()<1.0f/(float)k)
v++;
return v;
}
2)
int GetRandom(int k)
{
v=0;
while(rand()<(1-1.0f/(float)k))
v++;
return v;
}
3)
int GetRandom(int k)
{
v=0;
while(rand() > (1-1.0f/(float)(k+1)))
v++;
return v;
}
1) 似乎是正确的答案。检查k 的特定值的结果似乎表明情况并非如此。 (我设置了k=3。100000试验值的频率分布见下图)
如何做到这一点?
问题有点类似于this一。
【问题讨论】:
标签: random probability