Générer une séquence identique de nombres aléatoires dans Matlab

Dans ce tutoriel, je vous détaille la méthode pour produire des séquences constantes de nombres aléatoires sous Matlab.

Pourquoi opter pour des nombres aléatoires constants ? La génération de ces nombres repose sur des algorithmes exploitant des graines pour créer des listes de nombres pseudo-aléatoires, en se basant sur des distributions statistiques. La séquence générée varie d'une session à l'autre. Or, dans certains contextes, comme le test d'un programme, il est préférable de travailler avec une séquence fixe.

Pour créer des séquences de nombres aléatoires constantes, il suffit de sauvegarder l'état de la séquence dans une variable.

>> x=rand("state");

Cette opération vous permet de définir l'état de la fonction rand() au démarrage de votre script ou de votre session, grâce à l'utilisation de la variable x.

>> rand("state",x);

Cette commande de Matlab assure la reproduction identique de la séquence de nombres aléatoires à chaque utilisation.

Voici un exemple concret pour mieux comprendre.

Générons une matrice de nombres entiers aléatoires.

>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3

Rechargez ensuite la génération des nombres aléatoires en mémoire en utilisant la variable x.

>> rand("state",x);

Procédez à la création d'une autre matrice aléatoire de 3x3.

>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3

Les deux matrices obtenues seront parfaitement identiques.

Ainsi, il est possible de reproduire une même séquence de nombres aléatoires de multiples fois.

Note : Pour réutiliser la même variable x dans d'autres sessions ou sur différents ordinateurs, je recommande de sauvegarder le contenu de cette variable dans un fichier sur votre ordinateur, puis de la charger dans la mémoire de Matlab au démarrage d'une nouvelle session.

Réinitialisation de la Séquence de Nombres Aléatoires

Pour réinitialiser la séquence à son état actuel, utilisez 0 comme second paramètre.

Par exemple, en tapant rand("state", x), vous chargez la séquence de nombres aléatoires précédemment enregistrée dans la variable x.

>> rand("state",x);

Générez une nouvelle matrice de nombres entiers aléatoires.

>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3

En saisissant maintenant rand("state", 0), vous réinitialisez la séquence.

>> rand("state",0)

Enfin, générez une matrice aléatoire 3x3.

>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3

Le résultat sera systématiquement la même matrice à chaque essai.

 
 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin

Nombres aléatoires dans Matlab