The DBMS_RANDOM
package provides a builtin random number generator.
This chapter contains the following topics:
Operational notes
Note:
DBMS_RANDOM
is not intended for cryptography.The RANDOM
function produces integers in the range [2^^31, 2^^31).
The VALUE
function produces numbers in the range [0,1) with 38 digits of precision.
DBMS_RANDOM
can be explicitly initialized but does not require initialization before a call to the random number generator. It automatically initializes with the date, user ID, and process ID if no explicit initialization is performed.
If this package is seeded twice with the same seed, then accessed in the same way, it produces the same result in both cases.
In some cases, such as when testing, you may want the sequence of random numbers to be the same on every run. In that case, you seed the generator with a constant value by calling an overload of SEED
. To produce different output for every run, simply omit the seed call. Then the system chooses a suitable seed for you.
Table 61 DBMS_RANDOM package subprograms
Subprogram  Description 

Initializes the package with a seed value. 

Returns random numbers in a normal distribution. 

Generates a random number. 

Resets the seed. 

Gets a random string. 

Terminates package. 

One version gets a random number greater than or equal to 0 and less than 1, with 38 digits to the right of the decimal point (38digit precision). The other version gets a random Oracle Database number 
Note:
The INITIALIZE procedure, RANDOM function and TERMINATE procedure are deprecated. They are included in this release for legacy reasons only.Notes:
The PLS_INTEGER
and BINARY_INTEGER
data types are identical. This document uses BINARY_INTEGER
to indicate data types in reference information (such as for table types, record types, subprogram parameters, or subprogram return values), but may use either in discussion and examples.
The INTEGER
and NUMBER(38)
data types are also identical. This document uses INTEGER
throughout.
This procedure is deprecated. Although currently supported, it should not be used. It initializes the random number generator.
DBMS_RANDOM.INITIALIZE (
val IN BINARY_INTEGER);
Table 62 INITIALIZE procedure parameters
Parameter  Description 


Seed number used to generate a random number 
This procedure is obsolete as it simply calls the SEED procedure.
This function returns random numbers in a standard normal distribution.
DBMS_RANDOM.NORMAL RETURN NUMBER;
The random number, a NUMBER
value
This procedure is deprecated. Although currently supported, it should not be used. It generates and returns a random number.
DBMS_RANDOM.RANDOM RETURN binary_integer;
A random BINARY_INTEGER
value greater than or equal to power(2,31)
and less than power(2,31)
See the NORMAL function and the VALUE function.
This procedure resets the seed used in generating a random number.
DBMS_RANDOM.SEED ( val IN BINARY_INTEGER); DBMS_RANDOM.SEED ( val IN VARCHAR2);
Table 63 SEED procedure parameters
Parameter  Description 


Seed number or string used to generate a random number 
The seed can be a string up to length 2000.
This function generates and returns a random string.
DBMS_RANDOM.STRING opt IN CHAR, len IN NUMBER) RETURN VARCHAR2;
Table 64 STRING function parameters
Parameter  Description 


What the returning string looks like:
Otherwise the returning string is in uppercase alpha characters. 

Length of the returned string 
A VARCHAR2
value with the random string
This procedure is deprecated. Although currently supported, it should not be used. It would be called when the user is finished with the package.
DBMS_RANDOM.TERMINATE;
One version returns a random number, greater than or equal to 0 and less than 1, with 38 digits to the right of the decimal (38digit precision). The other version returns a random Oracle Database NUMBER
value x
, where x
is greater than or equal to the specified low
value and less than the specified high
value.
DBMS_RANDOM.VALUE RETURN NUMBER; DBMS_RANDOM.VALUE( low IN NUMBER, high IN NUMBER) RETURN NUMBER;
Table 65 VALUE function parameters
Parameter  Description 


Lower limit of the range in which to generate a random number 

Upper limit of the range in which to generate a random number 
A NUMBER
value that is the generated random number