Hallo Fisch365,
Es ist zunächst einmal gar nichts dagegen einzuwenden, sich ein paar hundert Millionen Zufallszahlen auf Halde zu legen und oft genug wird das in R auch zu den kürzesten Rechenzeiten führen. Athomas denkt halt schon einen Schritt weiter und wenn Du wirklich große Zahlen untersuchen willst, dann kann es sein, dass der Speicherplatz im Computer knapp wird. So große Zahlen kommen am ehesten dann zustande, wenn die Kombinatorik greift. Kombinatorik schafft sehr schnell sehr große Zahlen. Da kann es dann schonmal sinnvoll sein, sich Zufallszahlen nicht auf Halde zu legen, sondern sie erst zu erstellen, wenn sie gebraucht werden.
Der Durchschnitt aus 10000 Würfelwürfen kann so aussehen:
Da wird dann aber erstmal an einer Stelle Platz für 100000 Zufallszahlen gebraucht. Je größer anzahl wird, umso größer wird der Speicherbedarf.
Noch schlimmer ist:
Code: Alles auswählen
> stichprobe <- sample(1:6, 100000, TRUE)
> mean(stichprobe)
[1] 3.4978
Da wird nicht nur Platz für anzahl Ziehungen reserviert, sondern der bleibt auch noch reserviert, bis die Varialbe stichprobe gezielt gelöscht oder überschrieben wird.
Die Alternative ginge beispielsweise so:
Code: Alles auswählen
> anzahl <- 100000
> summe <- 0
> i <- 1
>
> while(i <= anzahl){
+ summe <- summe + sample(1:6, 1)
+ i <- i + 1
+ }
> print(summe/anzahl)
[1] 3.50973
Bei jedem Aufruf von sample wird nur eine einzige Zufallszahl generiert und sofort verbraucht, um die Summe zu bilden. Das Ergebnis ist das gleiche, der Fußabdruck im Speicherbedarf ist komplett unabhängig von anzahl. Die Umsetzung mit while-Schleife ist sicher nicht das, was Athomas vorschwebt, aber das Prinzip wird, glaube ich, damit sehr deutlich.
LG,
Bernhard