Anexa
Modalitatea de generare a numerelor aleatoare în calculatoarele numerice
Cea mai simplă distribuţie care se poate implementa în diferite limbaje de programare este
distribuţia uniformă (uniform deviate) în intervalul [0,1) a cărei funcţie de distribuţie este
Pornind cu un număr întreg, precizat într-un mod oarecare înainte de fiecare apel (numit în
literatura de limbă engleză seed - sămânţă), rutina care generează numere aleatoare (random
number generator) utilizează relaţia liniară de generare
unde a, b şi c sunt constante întregi alese convenabil. Numărul întreg obţinut astfel este
considerat mantisa unui număr real în reprezentarea virgulă mobilă. Se obţine astfel un număr
real în intervalul [0,1). Modul cel mai uzual de a alege "sămânţa" este utilizarea constantei
întregi care memorează timpul curent înregistrat de ceasului calculatorului.
Acest mod de generare nu produce, din punct de vedere riguros matematic, secvenţe de
numere absolut aleatoare. Secvenţa de numere caracterizează o variabilă pseudoaleatoare.
Spectrul acestei variabile este discret şi depinde atât de numărul de biţi alocaţi pentru un număr
real în virgulă mobilă în calculator, precum şi de (foarte important) alegerea particulară a
numerelor a, b şi c. Există alegeri defectuoase celebre pentru cele trei constante. În principiul
pentru numărul c trebuie ales un număr prim cât mai mare. Cea mai răspândită alegere,
considerată drept un generator standard minimal este cea propusă de Park şi Miller
În unele variante de implementare a rutinei RND se utilizează o relaţia de recurenţă
iar utilizatorul precizează el care este numărul iniţial.
În studiul de caz am utilizat relaţia
Însă, datorită constantei întregi care memorează timpul curent înregistrat de ceasului
calculatorului, numerele generate aleatoriu sunt aproape identice.
În consecinţă, am ales ca S să fie un număr aleatoriu întreg în intervalul [1, 10000], iar
pentru constantele a, b, c valorile:
117