来自非线性概率的线性概率
linear probability from non-linear one
这是我的问题。
假设您有这样一个函数:(在 C 中)
int strangeRand() {
if ( rand() % 100 <= 70 ) return 0;
else return 1;
}
这个return0个概率0.7
和 1 的概率为 0.3
这就是我想要做的,创建一个 return 0 的概率为 0.5 和 1 的概率也为 0.5 的函数。
我只需要使用 strangeRand() 函数[不能修改它](和循环,以及 if 等但没有 rand() 函数)
有人知道怎么做吗?
谢谢。
这实际上是一个已解决的问题!它通常被称为获得 fair result from an unfair coin.
算法的工作原理如下:
- 调用函数两次。
- 如果结果匹配,重新开始,忘记两个结果。
- 如果结果不同,使用第一个结果,忘记第二个。
所提供的 link 包含对 为什么 该算法有效的解释。
这是我的问题。
假设您有这样一个函数:(在 C 中)
int strangeRand() {
if ( rand() % 100 <= 70 ) return 0;
else return 1;
}
这个return0个概率0.7 和 1 的概率为 0.3
这就是我想要做的,创建一个 return 0 的概率为 0.5 和 1 的概率也为 0.5 的函数。
我只需要使用 strangeRand() 函数[不能修改它](和循环,以及 if 等但没有 rand() 函数)
有人知道怎么做吗?
谢谢。
这实际上是一个已解决的问题!它通常被称为获得 fair result from an unfair coin.
算法的工作原理如下:
- 调用函数两次。
- 如果结果匹配,重新开始,忘记两个结果。
- 如果结果不同,使用第一个结果,忘记第二个。
所提供的 link 包含对 为什么 该算法有效的解释。