Générateur de nombres aléatoires
Oracle met à disposition un générateur de nombres aléatoires via package DBMS_RANDOM. A noter que celui-ci n’est pas adéquat pour une utilisation en cryptographie, dans ce contexte on lui préfèrera plutôt le générateur aléatoire de DBMS_CRYPTO.
En revanche, dans une optique Statistique le package DBMS_RANDOM offre des fonctionnalités intéressantes. Il supporte la production de nombre suivant deux distributions:
La fonction DBMS_RANDOM.VALUE renvoie une valeur équiprobable comprise entre les bornes spécifiées en argument (par défaut 0 et 1).
La requête suivante permet par exemple de simuler 10 lancers de dés:
SQL> SELECT TRUNC (DBMS_RANDOM.VALUE (1, 7)) val
2 FROM DUAL
3 CONNECT BY LEVEL < 11;
VAL
----------
4
6
4
3
6
3
2
5
2
2
10 rows selected.
SQL>
La fonction DBMS_RANDOM.NORMAL renvoie des valeurs selon une loi normale centrée-réduite N(0,1).
La requête suivante permet par exemple de simuler échantillonnage de 10 personnes dont on mesure le QI qui par convention suit une loi N(100,15^2):
SQL> SELECT ROUND (DBMS_RANDOM.NORMAL * 15 + 100) qi
2 FROM DUAL
3 CONNECT BY LEVEL < 11;
QI
----------
133
92
83
91
107
77
106
127
106
102
10 rows selected.
SQL>
On peut initialiser le générateur via un appel préalable à la procédure SEED de manière à pouvoir produire des séries prévisibles dans un contexte de test.