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)])