Skip to content

Instantly share code, notes, and snippets.

@cmehay
Created February 8, 2019 21:44
Show Gist options
  • Save cmehay/14d9ebf8316609ad9efabb9f69d213ad to your computer and use it in GitHub Desktop.
Save cmehay/14d9ebf8316609ad9efabb9f69d213ad to your computer and use it in GitHub Desktop.
Simulation du paradoxe des deux enfants
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