Je n'ai pas le sens du "quiz demandant un sens de l'investissement", alors j'ai essayé de le résoudre avec la force brute (simulation Python Monte Carlo)

Un quiz intéressant a été donné dans l'article précédent de "ROKO HOUSE Siegel style investissement logique technique".

[Quiz pour demander au sens de l'investissement ]

Le problème est le suivant.

Dans les pays qui ne veulent que des garçons, chaque maison fait grandir des enfants jusqu'à la naissance d'un garçon. Quand j'aurai une fille, j'aurai un autre enfant. Lorsqu'un garçon naît, il n'aura plus d'enfants. Quel est le ratio hommes / femmes dans ce pays?

J'ai pensé intuitivement: "Chaque maison a un garçon. Y a-t-il un peu plus de filles parce que je continue d'avoir des enfants jusqu'à ce qu'un garçon naisse?"

Cliquez ici pour l'article de réponse. Je pense que c'est une bonne idée de réfléchir par vous-même avant de le regarder.

[Quiz à demander au sens de l'investissement <Réponse / Explication>]

Mon intuition était une erreur, j'ai donc essayé de voir si la réponse était vraiment correcte.

J'ai demandé à un million de couples de faire des enfants jusqu'à la naissance d'un garçon.

En fait, c'est impossible à moins que ce ne soit une dictature, alors je l'ai fait avec du code Python.

Est-ce aussi une sorte de simulation de Monte Carlo?

Voici les résultats. Je pense que c'est une bonne idée de réfléchir par vous-même avant de le regarder. (Ci-après gâté)

Je l'ai confirmé avec le code suivant.

python


import numpy as np
import pandas as pd
import random
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()

dic =  {'boys':[],
        'girls':[]}

n_couples = 1000000

for i in range(n_couples):
    n_girls = 0
    n_boys = 0
    while True:
        baby = random.choice(['boy','girl'])
        if baby=='boy':
            n_boys += 1
            break
        else:
            n_girls += 1
            
    dic['boys'].append(n_boys)
    dic['girls'].append(n_girls)

df = pd.DataFrame(dic)
df.index.name = 'parent_id'
df['total'] = df.sum(axis = 1)

print("Né d'un million de couples,")
print("Nombre de garçons:{:>7}".format(df['boys'].sum()))
print("Nombre de filles:{:>7}".format(df['girls'].sum()))
print("\n Nombre moyen de naissances:{:.0f}Fois".format(df['total'].mean()))
print("\n Répartition des ménages par nombre de filles")
df2 = pd.DataFrame(df['girls'].value_counts())

df2.index.name = 'Nombre de filles'
df2.columns = ['Nombre de ménages']

df2e = df2.copy()
df2e.index.name = 'Number of girls'
df2e.columns = ['number of couples']
df2e.plot(kind = 'bar', figsize = (8,5))

df2

Vous trouverez ci-dessous les résultats et les commentaires du code.

python


Né d'un million de couples,
Nombre de garçons: 1000000
Nombre de filles: 999687

Le nombre de garçons est, bien entendu, d'un million. Le nombre de filles est de près d'un million.

python


Nombre moyen de naissances: 2 fois

Le résultat est qu'en moyenne, si vous accouchez deux fois, vous aurez un garçon. Je suis convaincu que la probabilité est de 50%, mais je ne savais pas à l'avance.

** Répartition des ménages par nombre de filles **

Nombre de filles Nombre de ménages
0 500580
1 249813
2 124471
3 62512
4 31319
5 15657
6 7718
7 3962
8 1935
9 1041
10 493
11 239
12 141
13 60
14 22
16 14
15 13
17 4
18 3
20 1
19 1
25 1

Dans environ 50 000 ménages, la moitié du total, les garçons naissent à la première naissance et il n'y a pas de filles. La probabilité est de 50%.

Le fait que le nombre total de garçons et de filles est égal est que «50% des ménages ont un garçon et zéro fille». Quand j'y ai pensé intuitivement, j'ai oublié ce point.

Et une fille représentera environ 25 000 ménages, deux filles représenteront environ 12 500 ménages, et ainsi de suite. Il y a 50% de chances qu'un garçon naisse à chaque naissance.

Enfin, il y a eu un couple qui a donné naissance à 25 filles au moment où ils ont donné naissance à un garçon. Vive le bon travail.

Le graphique ci-dessus le montre. dist_of_couples.png

Je n'ai pas compris ce quiz au début, mais en écrivant le code, "Quand un garçon est né, le couple arrêtera d'accoucher, et je pétris diverses choses, mais au final, il y a 50% de chances que ce couple accouche. N'est-ce pas simplement que les garçons et les filles continuent de naître? "

Une personne sensée remarquera immédiatement ce fait et une image de distribution comme le graphique ci-dessus viendra à l'esprit.

Donc la réponse est

** "Le ratio hommes-femmes dans ce pays est de 1: 1 (valeur attendue)" **

C'était la bonne réponse.

Recommended Posts

Je n'ai pas le sens du "quiz demandant un sens de l'investissement", alors j'ai essayé de le résoudre avec la force brute (simulation Python Monte Carlo)
"Round of MD5 hash value of 6-digit number password" Je l'ai essayé avec Python
J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python
J'ai essayé de créer une liste de nombres premiers avec python
J'ai essayé de corriger "J'ai essayé la simulation probabiliste du jeu de bingo avec Python"
J'ai fait une application d'envoi de courrier simple avec tkinter de Python
Quand j'ai essayé de créer un environnement virtuel avec Python, cela n'a pas fonctionné
Je voulais connaître le nombre de lignes dans plusieurs fichiers et j'ai essayé de l'obtenir avec une commande
J'ai essayé de résoudre Soma Cube avec python
[Python] J'ai essayé de créer automatiquement un rapport quotidien de YWT avec la messagerie Outlook
Les débutants en Python ont créé un chat BOT alors j'ai essayé de résumer comment le faire
J'ai essayé de résoudre le problème avec Python Vol.1
Traitement d'image avec Python (j'ai essayé de le binariser en art mosaïque 0 et 1)
J'ai essayé de résoudre la théorie des nombres entiers d'AOJ avec Python
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
Je n'aime pas être frustré par la sortie de Pokemon Go, j'ai donc créé un script pour détecter la sortie et le tweeter
J'ai essayé de résoudre le problème de F02 comment écrire en temps réel hors ligne avec Python
J'ai créé un serveur avec socket Python et ssl et j'ai essayé d'y accéder depuis le navigateur
J'ai créé une fonction pour découper l'image de python openCV, alors veuillez l'utiliser.
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
Depuis qu'il y avait Doppelgenger, j'ai essayé de le distinguer avec l'intelligence artificielle (rires) (Partie 1)
J'ai essayé de trouver l'entropie de l'image avec python
Une collection de techniques professionnelles compétitives à résoudre avec Python
J'ai essayé de résoudre le problème d'optimisation des combinaisons avec Qiskit
J'ai essayé de résoudre la première question de l'examen d'entrée en mathématiques 2019 de l'Université de Tokyo avec python sympy
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
(Python) Valeur attendue ・ J'ai essayé de comprendre attentivement l'échantillonnage Monte Carlo
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
Un mémorandum lors de l'acquisition automatique avec du sélénium
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
[Python] J'ai essayé d'implémenter un tri stable, alors notez
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
Je voulais résoudre le problème ABC164 A ~ D avec Python
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
J'ai essayé de collecter automatiquement des images de Kanna Hashimoto avec Python! !!
J'ai essayé de créer un mécanisme de contrôle exclusif avec Go
[Vous devez le savoir! ] J'ai essayé de mettre en place un environnement Python de manière rentable en utilisant pleinement les privilèges des étudiants universitaires.
J'ai essayé de communiquer avec un serveur distant par communication Socket avec Python.
J'ai essayé de créer un programme qui convertit les nombres hexadécimaux en nombres décimaux avec python
Comment écrire hors ligne en temps réel J'ai essayé de résoudre E11 avec python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
J'ai essayé de rationaliser le rôle standard des nouveaux employés avec Python
[Outlook] J'ai essayé de créer automatiquement un e-mail de rapport quotidien avec Python
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python