Permutation aléatoire à l'aide de MATLAB
Ce tutoriel abordera la génération de vecteurs contenant une permutation aléatoire d’entiers à l’aide de la fonction randperm()
dans MATLAB.
Générer des vecteurs contenant une permutation aléatoire d’entiers à l’aide de la fonction randperm()
dans MATLAB
Nous pouvons utiliser la fonction intégrée randperm()
de MATLAB pour générer des vecteurs contenant une permutation aléatoire d’entiers. Nous pouvons définir le plus grand entier dans l’intervalle d’échantillonnage dans la fonction randperm()
, et le plus petit entier dans l’intervalle d’échantillonnage est un par défaut.
Par exemple, générons six entiers compris entre 1 et 6 à l’aide de la fonction randperm()
. Voir le code ci-dessous.
clc
v = randperm(6)
Production :
v =
3 5 6 1 4 2
La sortie changera si nous réexécutons ce code car ces valeurs sont aléatoires. Nous pouvons définir le nombre d’entiers de permutation aléatoire en utilisant le deuxième argument de la fonction randperm()
.
Nous ne pouvons définir qu’un nombre inférieur ou égal au premier argument car les nombres générés sont uniques et ne peuvent pas être répétés. Si nous définissons un nombre supérieur au premier argument, MATLAB affichera une erreur.
Par exemple, générons deux nombres de permutation aléatoire entre 1 et 6 en utilisant la fonction randperm()
. Voir le code ci-dessous.
clc
v = randperm(6,2)
Production :
v =
1 3
Seuls deux nombres dans la sortie changeront si nous réexécutons le code car les nombres générés sont aléatoires. On peut aussi sauvegarder l’état d’un générateur de nombres aléatoires à l’aide de la fonction rng
.
L’état précédemment enregistré peut être utilisé pour générer la même séquence d’entiers. Par exemple, générons deux vecteurs avec la même séquence en utilisant les fonctions randperm()
et rng
.
Voir le code ci-dessous.
clc
s = rng;
v1 = randperm(6,2)
rng(s)
v2 = randperm(6,2)
Production :
v1 =
1 2
v2 =
1 2
Dans la sortie, les deux vecteurs v1 et v2 contiennent les mêmes éléments.
Si nous réexécutons le code, la sortie changera, mais les éléments des deux vecteurs resteront inchangés. Si nous n’utilisons pas l’état précédemment stocké, les vecteurs auront des éléments différents.