R Language
Générateur de nombres aléatoires
Recherche…
Permutations aléatoires
Pour générer une permutation aléatoire de 5 nombres:
sample(5)
# [1] 4 5 3 1 2
Générer une permutation aléatoire de n'importe quel vecteur:
sample(10:15)
# [1] 11 15 12 10 14 13
On pourrait aussi utiliser le paquet 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
Reproductibilité du générateur de nombres aléatoires
Lorsque vous attendez que quelqu'un reproduise un code R set.seed()
des éléments aléatoires, la fonction set.seed()
devient très pratique. Par exemple, ces deux lignes produiront toujours une sortie différente (parce que c'est tout l'intérêt des générateurs de nombres aléatoires):
> sample(1:10,5)
[1] 6 9 2 7 10
> sample(1:10,5)
[1] 7 6 1 2 10
Ces deux produits produiront également des sorties différentes:
> 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
Cependant, si nous définissons la graine sur un élément identique dans les deux cas (la plupart des gens utilisent 1 pour plus de simplicité), nous obtenons deux échantillons identiques:
> set.seed(1)
> sample(letters,2)
[1] "g" "j"
> set.seed(1)
> sample(letters,2)
[1] "g" "j"
et même avec, disons, rexp()
dessine:
> 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
Générer des nombres aléatoires en utilisant diverses fonctions de densité
Vous trouverez ci-dessous des exemples de génération de 5 nombres aléatoires à l'aide de différentes distributions de probabilités.
Distribution uniforme entre 0 et 10
runif(5, min=0, max=10)
[1] 2.1724399 8.9209930 6.1969249 9.3303321 2.4054102
Distribution normale avec 0 moyenne et écart type de 1
rnorm(5, mean=0, sd=1)
[1] -0.97414402 -0.85722281 -0.08555494 -0.37444299 1.20032409
Distribution binomiale avec 10 essais et probabilité de succès de 0,5
rbinom(5, size=10, prob=0.5)
[1] 4 3 5 2 3
Distribution géométrique avec une probabilité de succès de 0,2
rgeom(5, prob=0.2)
[1] 14 8 11 1 3
Distribution hypergéométrique avec 3 boules blanches, 10 boules noires et 5 tirages
rhyper(5, m=3, n=10, k=5)
[1] 2 0 1 1 1
Distribution binomiale négative avec 10 essais et probabilité de succès de 0,8
rnbinom(5, size=10, prob=0.8)
[1] 3 1 3 4 2
Distribution de Poisson avec moyenne et variance (lambda) de 2
rpois(5, lambda=2)
[1] 2 1 2 3 4
Distribution exponentielle avec le taux de 1,5
rexp(5, rate=1.5)
[1] 1.8993303 0.4799358 0.5578280 1.5630711 0.6228000
Distribution logistique avec 0 emplacement et échelle de 1
rlogis(5, location=0, scale=1)
[1] 0.9498992 -1.0287433 -0.4192311 0.7028510 -1.2095458
Distribution khi-carré à 15 degrés de liberté
rchisq(5, df=15)
[1] 14.89209 19.36947 10.27745 19.48376 23.32898
Distribution bêta avec paramètres de forme a = 1 et b = 0,5
rbeta(5, shape1=1, shape2=0.5)
[1] 0.1670306 0.5321586 0.9869520 0.9548993 0.9999737
Distribution gamma avec paramètre de forme de 3 et échelle = 0,5
rgamma(5, shape=3, scale=0.5)
[1] 2.2445984 0.7934152 3.2366673 2.2897537 0.8573059
Distribution de Cauchy avec 0 emplacement et échelle de 1
rcauchy(5, location=0, scale=1)
[1] -0.01285116 -0.38918446 8.71016696 10.60293284 -0.68017185
Distribution log-normale avec 0 moyenne et écart-type de 1 (sur l'échelle du journal)
rlnorm(5, meanlog=0, sdlog=1)
[1] 0.8725009 2.9433779 0.3329107 2.5976206 2.8171894
Distribution de Weibull avec paramètre de forme de 0,5 et échelle de 1
rweibull(5, shape=0.5, scale=1)
[1] 0.337599112 1.307774557 7.233985075 5.840429942 0.005751181
Distribution de Wilcoxon avec 10 observations dans le premier échantillon et 20 secondes.
rwilcox(5, 10, 20)
[1] 111 88 93 100 124
Distribution multinomiale avec 5 objets et 3 cases utilisant les probabilités spécifiées
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