Das Geburtstagsparadoxon, besprochen von Christian Spannagel, brachte mich auf die Idee, seine theoretischen Berechnungen mit einem Zufallsgenerator zu überprüfen. Hier das Video, welches an dieser Idee schuld ist:
Wir haben 23 Kinder und die Aufgabe ist: Wie wahrscheinlich ist es das mindestens zwei der Kinder am gleichen Tag Geburtstag haben?
Sein Ergebnis: Wahrscheinlichkeit: 0,51.
Das Programm:
Dieses Programm simuliert Klassen mit 23 Schülern und zeigt die Statistik wie oft mindestens zwei Schüler am gleichen Tag Geburtstag haben.
<script>
// Initialberechnung beim Laden der Seite
let gesamtKlassen = 0;
let gesamtGleicheGeburtstage = 0;
berechne();
function berechne() {
const anzahlKlassen = 100000; // Anzahl der zu simulierenden Klassen
const klassengroesse = 23;
let gleicheGeburtstage = 0;
for (let i = 0; i < anzahlKlassen; i++) {
const geburtstage = [];
for (let j = 0; j < klassengroesse; j++) {
geburtstage.push(Math.floor(Math.random() * 365) + 1);
}
if (hatDoppelteGeburtstage(geburtstage)) {
gleicheGeburtstage++;
}
}
gesamtKlassen += anzahlKlassen;
gesamtGleicheGeburtstage += gleicheGeburtstage;
const wahrscheinlichkeit = (gesamtGleicheGeburtstage / gesamtKlassen);
const prozent = wahrscheinlichkeit * 100;
const output = document.getElementById("output");
output.innerHTML = `
${gesamtKlassen} Klassen berechnet.
${gesamtGleicheGeburtstage} Fälle von gemeinsamen Geburtstagen.
Wahrscheinlichkeit: ${wahrscheinlichkeit.toFixed(4)}.
Prozent: ${prozent.toFixed(2)}%.
`;
}
function hatDoppelteGeburtstage(geburtstage) {
// Die Funktion nutzt die Eigenschaften von Sets,
// um effizient zu prüfen, ob ein Array doppelte Werte enthält.
// Im Kontext des Geburtstagsparadoxons wird sie verwendet, um festzustellen,
// ob in einer simulierten Klasse mindestens zwei Schüler am gleichen Tag Geburtstag haben.
return new Set(geburtstage).size !== geburtstage.length;
}
</script>