J'ai essayé de simuler "Birthday Paradox" avec Python

"** Combien de personnes auront 50% de chances d'avoir deux (ou plus) personnes avec le même anniversaire? **" C'est.

--La probabilité qu'il y ait des personnes avec la même combinaison d'anniversaire dans le groupe dépasse ** 50% ** de ** 23 personnes **. --Quand 70 personnes se rassemblent, cela dépasse ** 99,9% **

[Birthday Paradox-Wikipedia](https://ja.wikipedia.org/wiki/%E8%AA%95%E7%94%9F%E6%97%A5%E3%81%AE%E3%83% 91% E3% 83% A9% E3% 83% 89% E3% 83% 83% E3% 82% AF% E3% 82% B9)

Même si seulement 70 personnes se rassemblent, la probabilité est supérieure à 99,9%, et il ne faut que 23 personnes pour dépasser 50%.

** * Nous ne considérons pas l'année du faon ou des jumeaux **

birthday_paradox.py


import math
from random import random


n_trials = 50000  #Nombre d'essais par essai
max_people = 100  #Nombre maximum de personnes à vérifier


print('Nombre de personnes,Nombre de fois où un groupe a eu le même anniversaire,Nombre d'essais,probabilité')
for n_people in range(2, max_people + 1):
    count = 0  #Nombre de fois où des personnes ont eu le même anniversaire
    for _ in range(n_trials):
        #Stockez un entier aléatoire de 1 à 365 qui ressemble à un anniversaire dans la liste.
        births = []
        for __ in range(n_people):
            birthday = math.ceil(random() * 365)
            births.append(birthday)
        #Si le nombre d'éléments à l'exclusion des doublons ne correspond pas au nombre initial d'éléments, il y a un anniversaire en double.
        if len(births) != len(set(births)):
            count += 1
    print(f'{n_people},{count},{n_trials},{count / n_trials}')

Résultat d'exécution

Nombre de personnes,Nombre de fois où un groupe a eu le même anniversaire,Nombre d'essais,probabilité
2,105,50000,0.0021
3,390,50000,0.0078
4,773,50000,0.01546
5,1370,50000,0.0274
6,1992,50000,0.03984
7,2853,50000,0.05706
8,3686,50000,0.07372
...
17,15850,50000,0.317
18,17422,50000,0.34844
19,18898,50000,0.37796
20,20602,50000,0.41204
21,22207,50000,0.44414
22,23795,50000,0.4759
23,25531,50000,0.51062  # <-50 à plus de 23 personnes%Au-delà
24,27170,50000,0.5434
25,28517,50000,0.57034
26,29820,50000,0.5964
27,31400,50000,0.628
...
68,49925,50000,0.9985
69,49940,50000,0.9988
70,49952,50000,0.99904  # <-99 quand plus de 70 personnes.9%Au-delà
71,49971,50000,0.99942
72,49970,50000,0.9994
73,49971,50000,0.99942
74,49985,50000,0.9997
75,49987,50000,0.99974
76,49989,50000,0.99978
77,49994,50000,0.99988
78,49994,50000,0.99988
79,49994,50000,0.99988
...
99,50000,50000,1.0
100,50000,50000,1.0  #  <-Plus de 100%!!

Recommended Posts

J'ai essayé de simuler "Birthday Paradox" avec Python
J'ai essayé la méthode des moindres carrés en Python
J'ai essayé de représenter graphiquement les packages installés en Python
J'ai écrit la file d'attente en Python
J'ai essayé la notification de ligne en Python
J'ai écrit la pile en Python
J'ai essayé de programmer le test du chi carré en Python et Java.
J'ai essayé d'implémenter la fonction d'envoi de courrier en Python
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'implémenter la permutation en Python
J'ai essayé d'implémenter PLSA dans Python 2
J'ai essayé d'utiliser l'optimisation bayésienne de Python
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé d'implémenter PPO en Python
Python: j'ai essayé le problème du voyageur de commerce
J'ai essayé le framework de test Python Tornado
J'ai essayé le mouvement Python3 qui change la direction dans le système de coordonnées
[Python] J'ai essayé de remplacer le nom de la fonction par le nom de la fonction
[Python] J'ai essayé de résumer le type collectif (ensemble) d'une manière facile à comprendre.
vprof - J'ai essayé d'utiliser le profileur pour Python
J'ai essayé de "différencier" l'image avec Python + OpenCV
J'ai essayé de jouer à un jeu de frappe avec Python
J'ai essayé Python> autopep8
J'ai essayé la programmation python pour la première fois.
J'ai essayé de "binariser" l'image avec Python + OpenCV
J'ai essayé d'implémenter TOPIC MODEL en Python
J'ai essayé d'utiliser le module Datetime de Python
J'ai essayé le comportement d'E / S Eventlet non bloquant en Python
J'ai essayé d'implémenter la fonction gamma inverse en python
J'ai essayé d'ajouter un module Python 3 en C
J'ai essayé d'implémenter le tri sélectif en python
J'ai essayé Python> décorateur
Je veux afficher la progression en Python!
J'ai essayé Python sur Mac pour la première fois.
J'ai essayé d'utiliser TradeWave (commerce du système BitCoin en Python)
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé d'implémenter un pseudo pachislot en Python
J'ai essayé python pour la première fois avec heroku
J'ai essayé d'implémenter le poker de Drakue en Python
J'ai essayé d'implémenter GA (algorithme génétique) en Python
[Python] J'ai essayé de représenter graphiquement le top 10 des ombres à paupières
Je veux écrire en Python! (3) Utiliser des simulacres
J'ai essayé de résumer comment utiliser les pandas de python
J'ai essayé de résoudre le problème avec Python Vol.1
Je veux utiliser le jeu de données R avec python
Python Open CV a essayé d'afficher l'image sous forme de texte.
J'ai essayé de frapper l'API avec le client python d'echonest
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai écrit python en japonais
Trouver des erreurs en Python
J'ai essayé la bibliothèque changefinder!
J'ai essayé l'extension C de Python
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
Je comprends Python en japonais!