To generate random permutation of 5 numbers:
sample(5)
# [1] 4 5 3 1 2
To generate random permutation of any vector:
sample(10:15)
# [1] 11 15 12 10 14 13
One could also use the package 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
When expecting someone to reproduce an R code that has random elements in it, the set.seed()
function becomes very handy.
For example, these two lines will always produce different output (because that is the whole point of random number generators):
> sample(1:10,5)
[1] 6 9 2 7 10
> sample(1:10,5)
[1] 7 6 1 2 10
These two will also produce different outputs:
> 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
However, if we set the seed to something identical in both cases (most people use 1 for simplicity), we get two identical samples:
> set.seed(1)
> sample(letters,2)
[1] "g" "j"
> set.seed(1)
> sample(letters,2)
[1] "g" "j"
and same with, say, rexp()
draws:
> 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
Below are examples of generating 5 random numbers using various probability distributions.
runif(5, min=0, max=10)
[1] 2.1724399 8.9209930 6.1969249 9.3303321 2.4054102
rnorm(5, mean=0, sd=1)
[1] -0.97414402 -0.85722281 -0.08555494 -0.37444299 1.20032409
rbinom(5, size=10, prob=0.5)
[1] 4 3 5 2 3
rgeom(5, prob=0.2)
[1] 14 8 11 1 3
rhyper(5, m=3, n=10, k=5)
[1] 2 0 1 1 1
rnbinom(5, size=10, prob=0.8)
[1] 3 1 3 4 2
rpois(5, lambda=2)
[1] 2 1 2 3 4
rexp(5, rate=1.5)
[1] 1.8993303 0.4799358 0.5578280 1.5630711 0.6228000
rlogis(5, location=0, scale=1)
[1] 0.9498992 -1.0287433 -0.4192311 0.7028510 -1.2095458
rchisq(5, df=15)
[1] 14.89209 19.36947 10.27745 19.48376 23.32898
rbeta(5, shape1=1, shape2=0.5)
[1] 0.1670306 0.5321586 0.9869520 0.9548993 0.9999737
rgamma(5, shape=3, scale=0.5)
[1] 2.2445984 0.7934152 3.2366673 2.2897537 0.8573059
rcauchy(5, location=0, scale=1)
[1] -0.01285116 -0.38918446 8.71016696 10.60293284 -0.68017185
rlnorm(5, meanlog=0, sdlog=1)
[1] 0.8725009 2.9433779 0.3329107 2.5976206 2.8171894
rweibull(5, shape=0.5, scale=1)
[1] 0.337599112 1.307774557 7.233985075 5.840429942 0.005751181
rwilcox(5, 10, 20)
[1] 111 88 93 100 124
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