DIAGNOZA DEFECTELOR. 2012 | Page 124

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