algorithm - 来自非线性概率的线性概率

标签 algorithm probability

这是我的问题。

假设您有一个这样的函数:(在 C 中)

int strangeRand() {
    if ( rand() % 100 <= 70 ) return 0;
    else return 1;
}

这个返回 0 的概率为 0.7 和 1 的概率为 0.3

这就是我想要做的,创建一个以 0.5 的概率返回 0 和以 0.5 的概率返回 1 的函数。

我只需要使用 strangeRand() 函数 [不能修改它](和循环,以及 if 等但没有 rand() 函数)

有人知道怎么做吗?

谢谢。

最佳答案

这实际上是一个已解决的问题!它通常被称为获得 fair result from an unfair coin .

算法的工作原理如下:

  1. 调用该函数两次。
  2. 如果结果匹配,重新开始,忘记两个结果。
  3. 如果结果不同,使用第一个结果,忘记第二个。

提供的链接包含对算法工作的原因的解释。

关于algorithm - 来自非线性概率的线性概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34051920/

相关文章:

algorithm - 联合查找算法如何与 "real"数据一起使用

java - java中3d空间值链表匹配的神经网络

numpy - 计算 xarray 中每个网格点的百分位

algorithm - 生成一个所有可能结果的矩阵,用于 throw n 个骰子(忽略顺序)

r - 用 probplot 叠加两个概率图

algorithm - 在均匀大小的桶之间随机分布,不重复

algorithm - 找到不规则(非凸)形状的稳定位置

algorithm - 归并排序究竟进行了多少次比较?

algorithm - 数据集中的组检测

math - 超过 2 次分割的分割检验的显着性检验