R bringt mehrere Generatoren für Zufallszahlen mit

Zufallszahlen spielen oft eine wichtige Rolle bei der Analyse von Daten. R bringt eine Reihe von Funktionen mit, die solche Zahlen aus verschiedenen Verteilungen generieren.
Genau genommen erzeugt R aber Pseudozufallszahlen, da diese von einem Algorithmus berechnet werden und der Zufall dabei keine Rolle spielt. Doch für die meisten Zwecke sind solche Zufallszahlen gut genug (siehe auch Wikipedia).
Um gleichförmig verteilte Zufallszahlen zu erzeugen bietet R die Funktion runif(). Sie erzeugt standardmäßig Zahlen zwischen 0 und 1. Das Intervall lässt sich aber nach Belieben anpassen. Alternativ kannst du auch die Funktion sample() verwenden.

> runif(1)
[1] 0.5595902
> # generiere einen Vector mit 4 Zufallszahlen
> runif(4)
[1] 0.6563260 0.4757386 0.4896942 0.6060721
> # erzeuge 3 Integer-Zahlen zwischen 0 und 100
> floor(runif(3, min=0, max=101))
[1] 58 51 80
> sample(1:100, 3, replace=TRUE)
[1]  5 12 14

Die Gleichverteiltheit dieser Pseudozufallszahlen lässt sich leicht mit Hilfe eines Histogramms dokumentieren.

r <- runif(1000, min=0, max=100)
hist(r)

Gleichverteilte Zufallszahlen
Für manche Zwecke braucht man nicht gleichverteilte, sondern normalverteilte Pseudozufallszahlen. Diese wirft die Funktion rnorm() aus. Als Parameter lässt sich neben der Anzahl der zu erzeugenden Zahlen auch der Mittelwert und die Standardabweichung angeben. Der Unterschied wird im Histogramm deutlich.

x <- rnorm(1000, mean=50, sd=10)
hist(x)

Normalverteilte Zufallszahlen
Last but not least gibt es noch reproduzierbare Pseudozufallszahlen. Das klingt zwar paradox, ist aber manchmal sinnvoll, um bestimmte Analysen exakt wiederholen zu können. Dazu erstellst du zunächst einen Seed mit einer beliebigen ganzen Zahl und verwendest dazu die Funktion set.seed().

> set.seed(809)
> runif(3)
[1] 0.08182088 0.11864272 0.22329809
> set.seed(809)
> runif(3)
[1] 0.08182088 0.11864272 0.22329809