Eigentlich ist in einem Computer nix zufällig, und selbst sog. Zufallszahlen sind strenggenommen nur berechnet. Die Algorithmen dahinter sind aber so komplex, daß man das Ergebniss als zufällig ansehen kann. Zumindest fällt einem das Vorhersehen der Werte schon recht schwer. Damit das so ist, brauchen die meisten Algorithmen einen zufälligen Startwert. Bei Rechnern mit Uhren kann man die Zeit benutzen. z.B. die Zeit in Sekunden seit 1970 oder sowas. Im Arduino müssen wir uns was anderes ausdenken. Wir könnten natürlich einfach die millis()
nehmen, aber die Wahrscheinlichkeit ist schon recht hoch, daß der Controller nach einem Reset immer die gleiche Zeit zum Starten und Initialisieren braucht.
Manchmal geht aber dieser Trick: Man nehme einen unbeschalteten analogen Eingang und lasse sich den Wert zurück geben. Normalerweise sind unbeschaltete Eingänge recht verrauscht. Ideal für den Zufallszahlengenerator.
Also kann man folgenden Code gut in der setup()
Rountine benutzen:
randomSeed(analogRead(0));
Um jetzt eine zufällige Zahl zu erzeugen, kann man einfach mit
random(max) random(min, max)
sich einen Long Wert geben lassen. Max ist die obere ausgeschlossene Schranke, das heißt Zahlen werden immer bis zu Max-1 erzeugt. Min ist die untere eingeschlossene Schranke, also kann min durchaus mal als Zufallszahl vorkommen.