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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow