If you're seeing this message, it means we're having trouble loading external resources on our website.

Dacă sunteţi în spatele unui filtru de web, vă rugăm să vă asiguraţi că domeniile *. kastatic.org şi *. kasandbox.org sunt deblocate.

Conţinutul principal

Numere aleatoare

Învățăm cum să generăm numere aleatoare în ProcessingJS, folosind funcția random() și verificând valorile cu condiții if.
Am folosit condițiile noastre if pentru a verifica valorile despre mediul de lucru, cum ar fi poziția curentă a mouse-ului, în funcție de care am dat un răspuns.
Dar dacă vrem imprevizibilitate? Ce se întâmplă dacă vrem ca programul nostru să acționeze diferit de fiecare dată când rulează?
Salvarea vine de la evenimente aleatorii!
Putem genera numere aleatorii, iar pe baza acestora putem schimba comportamentul programelor folosind ramuri if și else if.
De exemplu:
var randNum = random(0, 10);
if (randNum < 5) {
   text("Trick!", 200, 200);
} else {
   text("Treat!", 200, 200);
}
Programul afișează "Trick!” jumătate din timp și "Treat!” cealaltă jumătate.
Mecanismul de funcționare:
  • Variabilei randNum i se atribuie un număr aleatoriu, cuprins între 0 (inclusiv) şi 10. Valorile returnate pot include 0, 0.2, 3.3, 4, 5.5, 6.9, 8, 9 sau 9.99, dar nu și 10.
  • Condiția verifică dacă numărul este mai mic decât 5: se afișează "Trick!" dacă e adevărat, respectiv "Treat!" în caz contrar.
Uneori este mai ușor să manipulezi numere întregi în locul numerelor cu virgulă, astfel încât să putem verifica valori exacte. Iată câteva funcţii care transformă numerele cu virgulă în numere întregi:
  • round(): rotunjește un număr prin lipsă, până la cel mai apropiat număr întreg, dacă partea zecimală este mai mică decât 0,5 și se rotunjește prin adaos dacă partea zecimală este 0,5 sau mai mare.
  • ceil(): Întotdeauna rotunjește un număr până la următorul întreg mai mare.
  • floor(): Rotunjește întotdeauna un număr până la un număr întreg mai mic.
De obicei, vrem să generăm numere aleatorii care sunt alese relativ uniform. De exemplu, dacă simulăm răsucirea unei monede, atunci ne aşteptăm să aibă şanse egale atât partea "cap", cât și partea "pajură".
Secvența următoare are acest obiectiv:
var randFlip = floor(random(0, 2));
if (randFlip === 0) {
   text("Cap", 200, 200);
} else {
   text("Pajură", 200, 200);
}
Variabila randFlip va fi întotdeauna 0 sau 1, deoarece apelează floor() pentru valoarea returnată de random(0, 2).
Pentru a înțelege de ce se întâmplă acest lucru, iată rezultatul apelării lui floor() pentru diverse valori ale lui random(0, 2):
random(0, 2)floor(result)
0,00
0,217…0
0,542…0
0,973…0
1,01
1,332…1
1,589…1
1,999…1
Valorile returnate de random() sunt aleatorii, astfel încât nu vor fi neapărat la fel distribuite ca valorile din acel tabel. Dacă rulezi codul cu rotirea monedelor de 10 ori, s-ar putea să vezi un șir cu toate valorile "Cap" sau toate "Pajură". Totuși, dacă vei executa de mii de ori și vei număra, vei vedea fiecare variantă "Cap", respectiv "Pajură" cam 50% din timp.
Ca regulă generală, atunci când scopul nostru este să obţinem o distribuţie corectă şi uniformă a valorilor întregi, cel mai bine este să folosim floor() cu random().
Funcția random() este un mod excelent de a adăuga varietate la programele tale. Cu toate acestea, folosește-o cu atenție: dă-ți seama de intervalul de numere pe care le generează, decide dacă trebuie să rotunjești numerele și verifică valorile în mod corespunzător.
Vei avea șansa să încerci acest lucru în următorul proiect!