algorithm - 编写一个 C++ 程序,在给定 rand1() 的情况下生成 0 到 5 之间的随机分布,随机返回 0 或 1

标签 algorithm probability

给定一个函数

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/

相关文章:

python - GMM - 对数似然不是单调的

mysql - 如何使用单个查询计算 SQL (MySQL) 表中行的出现概率?

c++ - 如何直接将 double 值转换为 P.Q^-1 modulo MOD,其中 q 与 MOD 互质

algorithm - 检测传感器测量中的平台

algorithm - 组合和深度优先搜索解决方案

algorithm - Canny边缘检测器的时间复杂度

image - 像 Photoshop 这样的高通滤波器

java - 遍历n维空间

java - 如何在 Java 中保持多次执行的概率

java - 如何管理数组中的概率?