Geburtstagsproblem
> restart;
Zufallsgenerator initialisieren:
> _seed:=readlib(randomize)(); #wg. Maple 5 Abwärtskompatibilität
n : Anzahl der Personen für die Testreihe
> n:=50;
tage : Array das vermerkt, wie viele Personen an diesem Tag Geburtstag haben.
> tage:=array(1..365);
tage auf 0 initialisieren:
> for i from 1 to 365 do: tage[i] := 0; od:
>
>
Für jede Person: Zufälliger Tag für t bestimmen, entsprechender Eintrag im tage-array um 1 erhöhen:
>
for i from 1 to n do:
t:=rand(1..365)():
tage[t] := tage[t]+1;
od:
tage-Array anzeigen:
> print(tage);
>
Anzahl der Mehrfachbelegungen berechnen:
> anz:=0;
>
for i from 1 to 365 do:
if tage[i] > 1 then:
anz := anz+1:
end if:
od:
Anzahl ausgeben:
> anz;
Simulation mehrer Gruppen
>
mehrfachgeburtstage : Funktion gibt 1 zurück, falls die Simulation mindestens einen Mehrfachgeburtstag ergab, ansonsten 0
>
mehrfachgeburtstage := proc(n)
local anz, i, tage, t:
anz:=0;
tage:=array(1..365):
for i from 1 to 365 do: tage[i] := 0; od:
for i from 1 to n do: t:=rand(1..365)(): tage[t] := tage[t]+1; od:
for i from 1 to 365 do: if tage[i] > 1 then: return 1; end if: od:
return 0;
end proc:
>
simN: Anzahl der Simulationen
> simN:=100;
Simulationsergebnisse: 1 steht für Mehrfachgeburtstag, 0 für keinen
> sim:=seq(mehrfachgeburtstage(n), a=1..simN);
Verhältniss
> sum(sim[j], j=1..simN)/simN;
> evalf(%);
>