R Language
Generador de números aleatorios
Buscar..
Permutaciones aleatorias
Para generar permutación aleatoria de 5 números:
sample(5)
# [1] 4 5 3 1 2
Para generar permutación aleatoria de cualquier vector:
sample(10:15)
# [1] 11 15 12 10 14 13
También se podría utilizar el paquete pracma
randperm(a, k)
# Generates one random permutation of k of the elements a, if a is a vector,
# or of 1:a if a is a single integer.
# a: integer or numeric vector of some length n.
# k: integer, smaller as a or length(a).
# Examples
library(pracma)
randperm(1:10, 3)
[1] 3 7 9
randperm(10, 10)
[1] 4 5 10 8 2 7 6 9 3 1
randperm(seq(2, 10, by=2))
[1] 6 4 10 2 8
Reproducibilidad del generador de números aleatorios
Cuando se espera que alguien reproduzca un código R que tenga elementos aleatorios, la función set.seed()
vuelve muy útil. Por ejemplo, estas dos líneas siempre producirán una salida diferente (porque ese es el punto completo de los generadores de números aleatorios):
> sample(1:10,5)
[1] 6 9 2 7 10
> sample(1:10,5)
[1] 7 6 1 2 10
Estos dos también producirán diferentes salidas:
> rnorm(5)
[1] 0.4874291 0.7383247 0.5757814 -0.3053884 1.5117812
> rnorm(5)
[1] 0.38984324 -0.62124058 -2.21469989 1.12493092 -0.04493361
Sin embargo, si establecemos la semilla en algo idéntico en ambos casos (la mayoría de la gente usa 1 por simplicidad), obtenemos dos muestras idénticas:
> set.seed(1)
> sample(letters,2)
[1] "g" "j"
> set.seed(1)
> sample(letters,2)
[1] "g" "j"
y lo mismo con, digamos, rexp()
dibuja:
> set.seed(1)
> rexp(5)
[1] 0.7551818 1.1816428 0.1457067 0.1397953 0.4360686
> set.seed(1)
> rexp(5)
[1] 0.7551818 1.1816428 0.1457067 0.1397953 0.4360686
Generando números aleatorios usando varias funciones de densidad
A continuación hay ejemplos de cómo generar 5 números aleatorios usando varias distribuciones de probabilidad.
Distribución uniforme entre 0 y 10.
runif(5, min=0, max=10)
[1] 2.1724399 8.9209930 6.1969249 9.3303321 2.4054102
Distribución normal con 0 media y desviación estándar de 1.
rnorm(5, mean=0, sd=1)
[1] -0.97414402 -0.85722281 -0.08555494 -0.37444299 1.20032409
Distribución binomial con 10 intentos y probabilidad de éxito de 0.5.
rbinom(5, size=10, prob=0.5)
[1] 4 3 5 2 3
Distribución geométrica con probabilidad de éxito 0.2
rgeom(5, prob=0.2)
[1] 14 8 11 1 3
Distribución hipergeométrica con 3 bolas blancas, 10 bolas negras y 5 sorteos.
rhyper(5, m=3, n=10, k=5)
[1] 2 0 1 1 1
Distribución binomial negativa con 10 intentos y probabilidad de éxito de 0,8
rnbinom(5, size=10, prob=0.8)
[1] 3 1 3 4 2
Distribución de Poisson con media y varianza (lambda) de 2.
rpois(5, lambda=2)
[1] 2 1 2 3 4
Distribución exponencial con la tasa de 1,5.
rexp(5, rate=1.5)
[1] 1.8993303 0.4799358 0.5578280 1.5630711 0.6228000
Distribución logística con 0 ubicación y escala de 1.
rlogis(5, location=0, scale=1)
[1] 0.9498992 -1.0287433 -0.4192311 0.7028510 -1.2095458
Distribución Chi-cuadrado con 15 grados de libertad.
rchisq(5, df=15)
[1] 14.89209 19.36947 10.27745 19.48376 23.32898
Distribución beta con parámetros de forma a = 1 y b = 0.5
rbeta(5, shape1=1, shape2=0.5)
[1] 0.1670306 0.5321586 0.9869520 0.9548993 0.9999737
Distribución gamma con parámetro de forma de 3 y escala = 0.5
rgamma(5, shape=3, scale=0.5)
[1] 2.2445984 0.7934152 3.2366673 2.2897537 0.8573059
Distribución de Cauchy con 0 ubicación y escala de 1.
rcauchy(5, location=0, scale=1)
[1] -0.01285116 -0.38918446 8.71016696 10.60293284 -0.68017185
Distribución log-normal con 0 media y desviación estándar de 1 (en escala de registro)
rlnorm(5, meanlog=0, sdlog=1)
[1] 0.8725009 2.9433779 0.3329107 2.5976206 2.8171894
Distribución de Weibull con parámetro de forma de 0.5 y escala de 1.
rweibull(5, shape=0.5, scale=1)
[1] 0.337599112 1.307774557 7.233985075 5.840429942 0.005751181
Distribución de Wilcoxon con 10 observaciones en la primera muestra y 20 en la segunda.
rwilcox(5, 10, 20)
[1] 111 88 93 100 124
Distribución multinomial con 5 objetos y 3 cajas usando las probabilidades especificadas
rmultinom(5, size=5, prob=c(0.1,0.1,0.8))
[,1] [,2] [,3] [,4] [,5]
[1,] 0 0 1 1 0
[2,] 2 0 1 1 0
[3,] 3 5 3 3 5