L’algorisme congruencial lineal genera seqüències pseudoaleatòries segons la fórmula de recursió:
On:
Suposem:
Seqüència completa: 7, 6, 1, 8, 11, 10
Arduino implementa un LCG similar al de C. La funció random()
crida internament un LCG, i randomSeed()
estableix X₀.
void setup() {
Serial.begin(9600);
// No cridem randomSeed(): X₀ per defecte → seqüència sempre igual
for (int i = 0; i < 5; i++) {
Serial.println(random(0, 100));
}
}
void loop() {}
void setup() {
Serial.begin(9600);
// Utilitza la lectura analògica per generar soroll: X₀ diferent cada reinici
randomSeed(analogRead(A0));
for (int i = 0; i < 5; i++) {
Serial.println(random(0, 100));
}
}
void loop() {}
void setup() {
Serial.begin(9600);
// Llavor fixa = seqüència sempre reproduïble
randomSeed(1234);
for (int i = 0; i < 5; i++) {
Serial.println(random(0, 100));
}
}
void loop() {}
randomSeed()
, Arduino usa una llavor per defecte i la seqüència és sempre la mateixa.randomSeed()
basada en soroll (analogRead), la seqüència canvia cada reinici.