Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Geburtstagszwillinge (Simulationen)

An einer Party nehmen 30 Gäste teil. Der Veranstalterin fällt auf, dass zwei Personen am selben Tag Geburtstag haben.

Die Gastgeberin fragt sich nun, wie viele Leute normalerweise nötig sind, damit zwei Gäste am selben Tag Geburtstag haben.

Theoretisch können dies bis zu 366 Personen sein; die 366. Person hat dann bestimmt einen bereits "aufgetretenen" Geburtstag (Schalttage vernachlässigt).

Simulieren Sie eine Party und zählen Sie dabei, wie viele Personen es braucht, bis sich zum ersten Mal ein Geburtstag wiederholt. Starten Sie danach 10 000 solcher Simulationen und bilden Sie den Mittelwert: Wie viele Personen braucht es im Durchschnitt an einer Party, damit zwei Gäste am selben Tag Geburtstag feiern?

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

2 Lösung(en)

public class GeburtstagsZwillinge {
  public static void main(String[] args) {
    new GeburtstagsZwillinge().top();    }
    
  final int    TAGE_IM_JAHR     =   365;
  final int    TOTAL_PARTIES    = 10000;
  
  void top() {
      int summeAllerGaeste = 0; // Ueber alle Partys
      int partyNummer      = 1;
      while(partyNummer <= TOTAL_PARTIES) {
          summeAllerGaeste = summeAllerGaeste + einzelParty();
          partyNummer = partyNummer + 1;   }
      double schnitt = (double) summeAllerGaeste / TOTAL_PARTIES;
      System.out.println("Im Schnitt sind " + schnitt +
                    " Personen nötig, zwei gleiche Geburtstage zu erhalten.");   }

 /**
  * Wie wiele personen sind nötig, damit an einer Party zwei Personen
  * den selben Geburtstag feiern können.  
  * @return Anzahl (2..366)
  */
  boolean [] geburtstagExistiert = new boolean[TAGE_IM_JAHR];
  int einzelParty() {
    geburtstagsListeLeeren();
    int tag = zufallsTag();
    int personen = 1;
    while(!geburtstagExistiert[tag]) {
        geburtstagExistiert[tag] = true;
        tag                      = zufallsTag();
        personen                 = personen + 1; }
    return personen;  }
 
  // Erzeuge einen Zufallstag zwischen 0 und (inkl.) 364
  int zufallsTag() {
    return (int) (Math.random() * TAGE_IM_JAHR );  }
  
  void geburtstagsListeLeeren() {
    Arrays.fill(geburtstagExistiert, false);  }

} // end of class GeburtstagsZwillinge
                
Array.prototype.avg = function() {
  let sum = this.reduce((a, b) => a + b, 0);
  return sum / this.length;
}

function getBirthdayTwins() {
  let party = [], guest;
  while (party.indexOf(guest = Math.floor((Math.random() * 366) + 1)) == -1)
    party.push(guest);
  return party.length + 1;  // der zwilling ist ja auch gast!
}

// 10.000 mal testen und aufzeichnen
let parties = [];
for (i = 1; i <= 1e4; i++) parties.push(getBirthdayTwins());

// ausgabe
console.log(`Im Schnitt braucht es ${Math.floor(parties.avg())} Gäste,
damit zwei von ihnen den selben Geburtstag haben.`);         // lissalanda@gmx.at

                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

Verifikation/Checksumme:

Circa 24 bis 25 Personen sind nötig, damit mit Wahrscheinlichkeit > 50% zwei von ihnen am selben Tag Geburtstag feiern.

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 2
Schwierigkeit: k.A.
Webcode: aadv-mxmq
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Zu Aufgabenblatt hinzufügen