Использование Python 2.7. Предположим, у меня есть несправедливая монета, и я хочу превратить ее в честную монету, используя следующий способ:конвертировать несправедливую монету в честную монету в 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)])
http://www.billthelizard.com/2009/09/getting-fair-toss-from-biased-coin.html – Barmar
Google «превращает несправедливую монету в ярмарку», и вы найдете много документов, которые описывают одно и то же алгоритм. – Barmar
billthelizard выглядит великолепно, он построен вами @Barmar? Потрясающие! –