Created
February 8, 2019 21:44
-
-
Save cmehay/14d9ebf8316609ad9efabb9f69d213ad to your computer and use it in GitHub Desktop.
Simulation du paradoxe des deux enfants
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import random | |
class Children: | |
def __init__(self): | |
self.is_a_boy = bool(random.getrandbits(1)) | |
class Daddy: | |
def __init__(self): | |
self.children_1 = Children() | |
self.children_2 = Children() | |
@property | |
def has_two_boys(self): | |
return self.children_1.is_a_boy and self.children_2.is_a_boy | |
@property | |
def has_one_boy(self): | |
return self.children_1.is_a_boy or self.children_2.is_a_boy | |
def daddy_generator(nb): | |
for _ in range(nb): | |
yield Daddy() | |
daddies = [daddy for daddy in daddy_generator(100000) if daddy.has_one_boy] | |
nb_first_boy_daddy = len([daddy for daddy in daddies if daddy.children_1.is_a_boy]) | |
nb_second_boy_daddy = len([daddy for daddy in daddies if daddy.children_2.is_a_boy]) | |
nb_two_boys_daddies = len([daddy for daddy in daddies if daddy.has_two_boys]) | |
nb_daddies = len(daddies) | |
print(f'Sur {nb_daddies} pères ayant au moins un garçon, {nb_two_boys_daddies} pères ont un second garçon. Probabilité : {nb_two_boys_daddies/nb_daddies}') | |
print(f'Sur {nb_first_boy_daddy} pères ayant eu un garçon comme premier enfants, {nb_two_boys_daddies} pères ont un second garçon. Probabilité : {nb_two_boys_daddies/nb_first_boy_daddy}') | |
print(f'Sur {nb_second_boy_daddy} pères ayant un garçon comme deuxième enfants, {nb_two_boys_daddies} pères ont un second garçon. Probabilité: {nb_two_boys_daddies/nb_second_boy_daddy}') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment