Generierung von Zufallszahlen in Arduino
In diesem Tutorial wird das Generieren von Zufallszahlen mit der Funktion random()
in Arduino behandelt.
Verwenden Sie die Funktion random()
, um Zufallszahlen in Arduino zu generieren
Wir verwenden einen Zufallszahlengenerator, um eine Zufallszahl zwischen einem bestimmten Zahlenbereich zu generieren. Zum Beispiel können wir es verwenden, um einen Gewinner für ein Werbegeschenk auszuwählen.
Wir können die Funktion random()
verwenden, um Zufallszahlen in Arduino zu erzeugen.
Syntax:
random(maxVlaue);
random(minValue, maxValue);
Wenn wir in der ersten Zeile des Codes nur den Maximalwert des Bereichs übergeben, verwendet die Funktion Null als Minimalwert. Wir können auch minimale und maximale Bereiche definieren, indem wir das erste und zweite Argument der Funktion random()
verwenden.
Der Mindestwert für den Bereich ist inklusive, während der Höchstwert exklusiv ist. Wenn wir beispielsweise den Bereich von 0 bis 10 definieren, enthält die Zufallszahlenfolge 0, aber nicht 10.
Bevor wir die Funktion random()
verwenden, müssen wir sie mit der Funktion randomSeed()
initialisieren. Wir müssen eine zufällige Anzahl von long
Datentypen innerhalb der Funktion randomSeed()
übergeben, um den Zufallszahlengenerator zu initialisieren.
Angenommen, wir möchten, dass die Zufallszahl dieselbe Zahlenfolge wie die vorherige hat. Wir müssen dieselbe Zahl innerhalb der Funktion randomSeed()
übergeben.
Wenn wir eine andere Zahlenfolge wollen, müssen wir jedes Mal, wenn wir den Zufallszahlengenerator initialisieren, eine andere Zahl verwenden. In diesem Fall können wir einen der analogen Pins von Arduino verwenden.
Wenn kein Eingang mit einem analogen Pin verbunden ist, hat der Pin einen fließenden Wert oder einen zufälligen Wert. Wir können diesen Zufallswert mit der Funktion analogRead()
lesen.
Verwenden wir beispielsweise random()
, um Zufallszahlen zwischen 0 und 100 zu generieren.
long MyRnd;
void setup() {
Serial.begin(9600);
randomSeed(analogRead(0));
}
void loop() {
MyRnd = random(100);
Serial.println(MyRnd);
delay(500);
}
Ausgabe:
21
17
20
11
46
51
41
71
2
74
Die Zufallszahlen werden weiterhin generiert, weil wir den Zufallszahlengenerator in die Funktion loop()
platziert haben. Wenn wir die Zufallszahl eine bestimmte Anzahl von Malen erzeugen möchten, können wir eine Schleife innerhalb der Funktion setup()
verwenden, die nur einmal ausgeführt wird.
Die Bereichswerte, die wir in der Funktion random()
definieren, können 32-Bit sein. Wenn ein größerer Wert verwendet wird, gibt die Funktion keinen Fehler aus, aber das Ergebnis weicht von dem erwarteten ab.
Wenn wir dieselbe Zahl wie 1
in der Funktion randomSeed()
verwenden und den Code neu starten, ist die Zufallszahlenfolge dieselbe.