Ich habe versucht, "Birthday Paradox" mit Python zu simulieren

"** Wie viele Personen haben eine 50% ige Chance, zwei (oder mehr) Personen mit demselben Geburtstag zu haben? **" Das ist.

――Die Wahrscheinlichkeit, dass sich Personen mit derselben Geburtstagskombination in der Gruppe befinden, übersteigt ** 50% ** von ** 23 Personen **.

[Geburtstagsparadox-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)

Selbst wenn sich nur 70 Personen versammeln, liegt die Wahrscheinlichkeit bei über 99,9%, und nur 23 Personen werden benötigt, um 50% zu überschreiten.

** * Wir berücksichtigen nicht das Jahr des Schwertes oder der Zwillinge **

birthday_paradox.py


import math
from random import random


n_trials = 50000  #Anzahl der Versuche pro Versuch
max_people = 100  #Maximale Anzahl zu überprüfender Personen


print('Anzahl der Personen,Wie oft gab es eine Gruppe mit demselben Geburtstag,Anzahl von Versuchen,Wahrscheinlichkeit')
for n_people in range(2, max_people + 1):
    count = 0  #Wie oft gab es Menschen mit demselben Geburtstag
    for _ in range(n_trials):
        #Speichern Sie eine zufällige Ganzzahl von 1 bis 365, die wie ein Geburtstag aussieht, in der Liste.
        births = []
        for __ in range(n_people):
            birthday = math.ceil(random() * 365)
            births.append(birthday)
        #Wenn die Anzahl der Elemente ohne Duplikate nicht mit der ursprünglichen Anzahl der Elemente übereinstimmt, liegt ein doppelter Geburtstag vor.
        if len(births) != len(set(births)):
            count += 1
    print(f'{n_people},{count},{n_trials},{count / n_trials}')

Ausführungsergebnis

Anzahl der Personen,Wie oft gab es eine Gruppe mit demselben Geburtstag,Anzahl von Versuchen,Wahrscheinlichkeit
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 bei über 23 Personen%Darüber hinaus
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 bei über 70 Personen.9%Darüber hinaus
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  #  <-Nicht mehr 100%!!

Recommended Posts

Ich habe versucht, "Birthday Paradox" mit Python zu simulieren
Ich habe die Methode der kleinsten Quadrate in Python ausprobiert
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich habe die Warteschlange in Python geschrieben
Ich habe Line Benachrichtigung in Python versucht
Ich habe den Stack in Python geschrieben
Ich habe versucht, den Chi-Quadrat-Test in Python und Java zu programmieren.
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
Ich habe versucht, PLSA in Python zu implementieren
Ich habe versucht, Permutation in Python zu implementieren
Ich habe versucht, PLSA in Python 2 zu implementieren
Ich habe versucht, die Bayes'sche Optimierung von Python zu verwenden
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, PPO in Python zu implementieren
Python: Ich habe das Problem des Handlungsreisenden ausprobiert
Ich habe das Python Tornado Testing Framework ausprobiert
Ich habe die Bewegung Python3 ausprobiert, die die Richtung im Koordinatensystem ändert
[Python] Ich habe versucht, den Funktionsnamen durch den Funktionsnamen zu ersetzen
[Python] Ich habe versucht, den kollektiven Typ (Satz) auf leicht verständliche Weise zusammenzufassen.
vprof - Ich habe versucht, den Profiler für Python zu verwenden
Ich habe versucht, das Bild mit Python + OpenCV zu "differenzieren"
Ich habe versucht, mit Python ein Tippspiel zu spielen
Ich habe Python> autopep8 ausprobiert
Ich habe zum ersten Mal versucht, Python zu programmieren.
Ich habe versucht, das Bild mit Python + OpenCV zu "binarisieren"
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Ich habe versucht, das Datetime-Modul von Python zu verwenden
Ich habe versucht, das Verhalten von E / A-Eventlets in Python nicht zu blockieren
Ich habe versucht, die inverse Gammafunktion in Python zu implementieren
Ich habe versucht, ein Python 3-Modul in C hinzuzufügen
Ich habe versucht, eine selektive Sortierung in Python zu implementieren
Ich habe Python> Decorator ausprobiert
Ich möchte den Fortschritt in Python anzeigen!
Ich habe Python zum ersten Mal auf dem Mac ausprobiert.
Ich habe versucht, TradeWave zu verwenden (BitCoin-Systemhandel in Python)
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Ich habe Python zum ersten Mal mit Heroku ausprobiert
Ich habe versucht, Drakues Poker in Python zu implementieren
Ich habe versucht, GA (genetischer Algorithmus) in Python zu implementieren
[Python] Ich habe versucht, die Top 10 der Lidschatten grafisch darzustellen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich möchte R-Datensatz mit Python verwenden
Python Open CV hat versucht, das Bild im Text anzuzeigen.
Ich habe versucht, die API mit dem Python-Client von echonest zu erreichen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Ich habe Python auf Japanisch geschrieben
Finde Fehler in Python
Ich habe die Changefinder-Bibliothek ausprobiert!
Ich habe die C-Erweiterung von Python ausprobiert
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
Ich verstehe Python auf Japanisch!