Generation de nombres aleatoires Arduino

La fonction Arduino random() renvoie un nombre pseudo-aléatoire, c’est-à-dire que la séquence de génération du nombre aléatoire est toujours prévisible. La fonction randomSeed vous permet de placer une variable ou une constante dans la fonction random pour générer davantage de valeurs aléatoires. Dans cet article, nous allons découvrir comment définir correctement un nombre aléatoire dans le langage de programmation Arduino IDE.


Pour cette activité, nous aurons besoin:

  • Arduino Uno / Arduino Nano / Arduino Mega

Matériel supplémentaire sur ce sujet:

  1. Type de données (variable) dans Arduino
  2. Arduino EEPROM: exemples pour lire/écrire
  3. Interruptions externes et matérielles Arduino

random() – Génération de nombres pseudo-aléatoires

La fonction random() vous permet de renvoyer un nombre pseudo-aléatoire dans l’intervalle spécifié par les valeurs min et max. Voyons des exemples avec différents types de données.

Fonction Arduino random int

Dans l’exemple présenté, le type de données sélectionné est int, qui stocke les nombres entiers. D’autres types de données peuvent également être utilisés: byte, long, unsigned long, unsigned int et autres. La plage souhaitée est réglée en conséquence (min, max).

int data;

void setup() {
   Serial.begin(9600);
}

void loop() {
   data = random(100, 200);
   Serial.println(data);
   delay(250);
}

Fonction Arduino random float

Le microcontrôleur Arduino ne peut générer que des nombres entiers. Par conséquent, pour obtenir un type de données float avec deux décimales, vous devez générer un entier séparément et lui ajouter des décimales. Un exemple d’un tel programme:

float data;
float data1;
float data2;

void setup() {
   Serial.begin(9600);
}

void loop() {
   data1 = random(0, 10);
   data2 = random(0, 100);
   data = data1 + data2 / 100;
   Serial.println(data);
   delay(250);
}


Fonction Arduino random bool

Si vous voulez une variable booléenne aléatoire qui ne peut prendre que deux valeurs: vrai ou faux. Il est possible de générer un vrai/faux aléatoire avec une probabilité donnée. Il suffit d’affecter le résultat de la fonction aléatoire à la variable bool. Exemple:

bool data;

void setup() {
   Serial.begin(9600);
}

void loop() {
   data = random(5);
   Serial.println(data);
   delay(250);
}

Notez que dans tous les exemples de programmes présentés ci-dessus, la séquence aléatoire de nombres est répétée à chaque fois que le programme Arduino est redémarré. Cela peut être évité en utilisant la fonction randomSeed d’Arduino, qui vous permet de placer une variable dans la fonction random(). Pour ce faire, utilisez millis, analogRead ou d’autres commandes pour rendre la génération des nombres plus aléatoire que pseudo-random.

randomSeed() – Génération de nombres aléatoires

int data;

void setup() {
   Serial.begin(9600);
   randomSeed(analogRead(A1));
}

void loop() {
   data = random(100, 200);
   Serial.println(data);
   delay(250);
}

A chaque redémarrage du programme, le générateur de nombres pseudo-aléatoires sera initialisé par la fonction randomSeed(analogRead(A1)); à partir d’une valeur aléatoire due au « bruit » sur le port. N’importe quel port libre peut être utilisé à cette fin, car toutes les sorties analogiques captent des bruits aléatoires provenant de l’environnement – ondes radio, interférences électromagnétiques des ordinateurs, téléphones portables, etc.





3 Replies to “Arduino fonction randomSeed, random int”

  1. Tu peux faire ça avec un buzzer et donc si tel chiffre est tiré le buzzer fait un bruit en fonction du chiffre tiré.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.