使用 Python 2.7。假设我有一枚不公平的硬币,我想用下面的方法把它变成公平的硬币,
- 不公平硬币产生正面的概率相等;
- 抛不公平的硬币,只接受正面;
- 当出现正面时,将其视为 1(虚拟公平币的头部),当另一个正面出现时,将其视为 0(虚拟公平币的尾部),下次出现正面时,将其视为 1,下次处理如 0, ..., 等等。
不确定这种方法是否有效?其实我对上面的方法以及如何equalCoinHelper()
正确使用并不太有信心(我在我的代码中标记了我的问题)。
如果有人有任何好主意,那就太好了。
from __future__ import print_function
import random
counter = 0
# 0.3 probability return head as 1
# 0.7 probability return tail as 0
def unFairCoin():
if random.random() < 0.3:
return 1
else:
return 0
# probability of generating 1 is equal, so keep 1 only
def equalCoinHelper():
result = 0
while result == 0:
result = unFairCoin()
def equalDistribution():
global counter
# not think about how to leverage this better
equalCoinHelper()
counter += 1
if counter % 2 == 0:
return 1
else:
return 0
if __name__ == "__main__":
# generate 10 random 0/1 with equal probability
print ([equalDistribution() for _ in range(10)])