OracleStatistique

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *