我遇到了以下问题:
使用 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
试验值的频率分布如下图所示)
如何做到这一点?
这个问题有点类似于这个问题。