Atsitiktinių skaičių generavimas
Arduino atsitiktinių skaičių generavimui naudoja dvi funkcijas:
- randomSeed(seed)
- random()
randomSeed(seed)
Funkcija randomSeed(seed) – nepaisant to, kad random funkcijos gražinami skaičiai yra visiškai atsitiktiniai, tačiau pats funkcijos veikimas ir gražinama skaičių seka ilgainiui tampa nuspėjama. Šiai problemai spręsti galime naudoti randomSeed (seed) funkciją. Jei turite neprijungtą analoginį kaištį, jis gali paimti atsitiktinį triukšmą iš aplinkos. Tai gali būti radijo bangos, kosminiai spinduliai, mobiliųjų telefonų elektromagnetiniai trukdžiai, fluorescencinės lempos ir pan. Toks atsitiktinis triukšmas randomSeed() funkcijoje bus naudojamas, kaip parametras generuojant atsitiktinius skaičius.
Pavyzdys:
randomSeed(analogRead(5));
random( )
Random() funkcijos veikimo principas itin elementarus – funkcija grąžina atsitiktinius skaičius. Norint gauti tikslesnes grąžinamas vertes galima šia funkciją vykdyti su parametrais kaip nurodyta pavyzdyje.
long random(max) // vietoje max įrašykite norimą skaičių, o funkciją grąžins atsitiktinį skaičių nuo 0 iki jūsų nurodyto skaičiaus - max
long random(min, max) // galima kaip parametrą naudoti ir minimalų skaičių taip nustatant apatine rėžio verte.
Funkcijų panaudojimo pavyzdys
long randNumber;
void setup() {
Serial.begin(9600);
// jei analoginis kaištis 0 neprijungtas
// atsitiktinis triukšmas sugeneruos randomSeed() iškvietimą
// kaskart paleidžiant programą gausime skirtingą pradinį skaičių
randomSeed(analogRead(0));
}
void loop() {
Serial.print("random1=");
randNumber = random(500);
Serial.println(randNumber); // spausdinsime skaičių nuo 0 iki 499
Serial.print("random2=");
randNumber = random(50, 100); // spausdinsime skaičių nuo 50 iki 99
Serial.println (randNumber);
delay(50);
}