给定一个函数
int rand1();
以相同的概率返回 0 或 1, 实现一个功能
int rand5();
以相同的概率返回 0,1,2,3,4,5。
!!!扭转!!!在将其标记为重复之前先阅读...
调用 rand1() 的次数是固定的。您可以将其设置为 10、20 或 100,但不能设置任意数量的 rand1() 调用。 即 rand1() 调用的数量有上限。 此外,您还必须保证 rand5() 始终以相同的概率返回 o 到 5。代码偏向于少数额外的 0 和 1 是 Not Acceptable 。
如果您认为不可能编写这样的函数,那么您可以让我们都知道为什么它不可能。
编辑: 这就是我所拥有的,我认为这还不够
int rand5()
{
bitset<3> b;
b[0] = rand1();
b[1] = rand1();
b[2] = rand1();
int i = b;
if(b >= 6)
return rand5();
return i;
}
最佳答案
不可能。你不能将 2^n 整分为 6。
关于algorithm - 编写一个 C++ 程序,在给定 rand1() 的情况下生成 0 到 5 之间的随机分布,随机返回 0 或 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7127694/