Hi!
Ich schreibe sowas nicht in Java, sondern in R. Das sieht dann so aus:
"1:7" ist die die Folge 1,2,3,...7. Aus 1:7 ziehen wir ohne zurücklegen 7 mal. Das geht in R so:
- Code: Alles auswählen
sample( 1:7, 7 )
jetzt kann ich prüfen, an welchen Tagen die richtige Socke gezogen worden ist:
- Code: Alles auswählen
sample( 1:7, 7) == 1:7
bzw an wievielen Tagen in dieser Woche die richtige Socke gezogen worden ist:
- Code: Alles auswählen
sum( sample( 1:7, 7) == 1:7 )
Das kann ich jetzt z. B. 1 Mio. mal wiederholen und den Mittelwert der richtigen Tage pro Woche ausgeben lassen:
- Code: Alles auswählen
a = replicate(10^6, sum( sample( 1:7, 7) == 1:7 ) )
mean(a)
Und dann antwortet R mir, dass z. B. mit 1,0014 oder auch mit 0.99848x pro Woche damit zu rechnen ist, dass Du die richtige Socke trägst.
Wir kommen also beide mit unterschiedlichen Simulationen zum selben Ergebnis. Dein Java hat vielleicht etwas schneller gerechnet, dafür war ich in meiner spezialisierten Programmiersprache wahrscheinlich deutlich schneller mit dem Programmieren.
Am Dienstag hast Du zwei Möglichkeiten: die Dienstagssocke ist schon weg (p=1/7), dann ist p(richtige Socke)=0, sonst p(richtige Socke)=1/6. Zusammen also
p(richtige Socke) = 1/7 * 0 + 6/7 * (1/6)
p(richtige Socke) = o + 6/(7*6)
p(richtige Socke) = 1/7
Für den n-ten Tag ist die Wahrscheinlichkeit, dass die passende Socke schon weg ist p(keine Chance) = (1/7)^(n-1), was egal ist, weil es immer mit null multipliziert wird. Die Chance, unter den verbliebenen Socken die richtige zu finden ist analog oben "Chance Socke noch da"*"Chance richtige Socke zu treffen": Restsockenzahl/7 * 1/Restsockenzahl - das kürzt sich jeweils zu 1/7 raus.
Simulation programmieren macht mir persönlich trotzdem mehr Spaß
Falls Du interessa bekommen hast, Dich neben Java auch mit R zu beschäftigen:
www.r-project.org und forum.r-statistik.de
LG,
Bernhard