a<-c(1,2,0,7,5)
Einige Sprachen haben eine Auswahlfunktion - wählen Sie eine Zufallszahl aus a- wie in R?
Antworten:
# Sample from the vector 'a' 1 element.
sample(a, 1)
adie Länge 1 ist, numerisch ist (im Sinne von is.numeric) und a> = 1 ist, erfolgt die Abtastung über die Stichprobe von 1:a. Beachten Sie, dass diese Komfortfunktion zu unerwünschtem Verhalten führen kann, wenn sie aunterschiedlich lang ist.
Seien Sie vorsichtig bei der Verwendung der Probe!
sample(a, 1)funktioniert gut für den Vektor in Ihrem Beispiel, aber wenn der Vektor die Länge 1 hat, kann dies zu unerwünschtem Verhalten führen. Er verwendet den Vektor 1:afür die Abtastung.
Wenn Sie also versuchen, ein zufälliges Element aus einem Vektor unterschiedlicher Länge auszuwählen, überprüfen Sie den Fall der Länge 1!
sampleWithoutSurprises <- function(x) {
if (length(x) <= 1) {
return(x)
} else {
return(sample(x,1))
}
}
Lesen Sie diesen Artikel über das Generieren von Zufallszahlen in R.
http://blog.revolutionanalytics.com/2009/02/how-to-choose-a-random-number-in-r.html
Sie können samplein diesem Fall verwenden
sample(a, 1)
Das zweite Attribut zeigt an, dass Sie nur eine Zufallszahl erhalten möchten . Das Generieren von Zahlen zwischen bestimmten Bereichsfunktionen runifist nützlich.
Eine Alternative besteht darin, ein Element mit runif aus dem Vektor auszuwählen. dh
a <- c(1,2,0,7,5)
a[runif(1,1,6)]
Nehmen wir an, Sie möchten eine Funktion, die bei jeder Ausführung eine auswählt (nützlich beispielsweise in einer Simulation). Damit
a <- c(1,2,0,7,5)
sample_fun_a <- function() sample(a, 1)
runif_fun_a <- function() a[runif(1,1,6)]
microbenchmark::microbenchmark(sample_fun_a(),
runif_fun_a(),
times = 100000L)
Einheit: Nanosekunden
sample_fun_a () - 4665
runif_fun_a () - 1400
runif scheint in diesem Beispiel schneller zu sein.