128 DBMS_RANDOM
The DBMS_RANDOM
package provides a builtin random number generator. DBMS_RANDOM
is not intended for cryptography.
This chapter contains the following topics:
128.1 DBMS_RANDOM Deprecated Subprograms
These subprograms are deprecated with Oracle Database 11g. Oracle recommends that you do not use deprecated procedures in new applications. Support for deprecated features is for backward compatibility only.
128.2 DBMS_RANDOM Security Model
This package should be installed as SYS
. By default, the package is initialized with the current user name, current time down to the second, and the current session. Oracle recommends that users who need to execute this package should be given EXECUTE
privilege explicitly and should not rely on PUBLIC EXECUTE
privilege.
128.3 DBMS_RANDOM Operational Notes
These operational notes apply to DBMS_RANDOM.

DBMS_RANDOM.RANDOM
produces integers in [2^^31, 2^^31). 
DBMS_RANDOM.VALUE
produces numbers in [0,1) with 38 digits of precision.
DBMS_RANDOM
can be explicitly initialized, but does not need to be initialized before calling the random number generator. It will automatically initialize 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 will produce the same results 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 one of the overloads of DBMS_RANDOM.SEED
. To produce different output for every run, simply to omit the call to "Seed" and the system will choose a suitable seed for you.
128.4 Summary of DBMS_RANDOM Subprograms
This table lists the DBMS_RANDOM
subprograms and briefly describes them.
Table 1281 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 

Gets a random number, greater than or equal to 0 and less than 1, with 38 digits to the right of the decimal (38digit precision), while the overloaded function gets a random Oracle number x, where x is greater than or equal to 
128.4.1 INITIALIZE Procedure
This deprecated procedure initializes the generator.
Note:
This procedure is deprecated with Release 11gR1 and, although currently supported, it should not be used.
Syntax
DBMS_RANDOM.INITIALIZE ( val IN BINARY_INTEGER);
Pragmas
PRAGMA restrict_references (initialize, WNDS);
Parameters
Table 1282 INITIALIZE Procedure Parameters
Parameter  Description 


Seed number used to generate a random number 
Usage Notes
This procedure is obsolete as it simply calls the SEED Procedures.
128.4.2 NORMAL Function
This function returns random numbers in a standard normal distribution.
Syntax
DBMS_RANDOM.NORMAL RETURN NUMBER;
Pragmas
PRAGMA restrict_references (normal, WNDS);
Return Values
Table 1283 NORMAL Function Parameters
Parameter  Description 


Returns a random number 
128.4.3 RANDOM Function
This deprecated procedure generates a random number.
Note:
This function is deprecated with Release 11gR1 and, although currently supported, it should not be used.
Syntax
DBMS_RANDOM.RANDOM RETURN binary_integer;
Pragmas
PRAGMA restrict_references (random, WNDS);
Return Values
Table 1284 RANDOM Function Parameters
Parameter  Description 


Returns a random integer greater or equal to power(2,31) and less than power(2,31) 
128.4.4 SEED Procedures
This procedure resets the seed.
Syntax
DBMS_RANDOM.SEED ( val IN BINARY_INTEGER); DBMS_RANDOM.SEED ( val IN VARCHAR2);
Pragmas
PRAGMA restrict_references (seed, WNDS);
Parameters
Table 1285 SEED Procedure Parameters
Parameter  Description 


Seed number or string used to generate a random number 
Usage Notes
The seed can be a string up to length 2000.
128.4.5 STRING Function
This function gets a random string.
Syntax
DBMS_RANDOM.STRING opt IN CHAR, len IN NUMBER) RETURN VARCHAR2;
Pragmas
PRAGMA restrict_references (string, WNDS);
Parameters
Table 1286 STRING Function Parameters
Parameter  Description 


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

Length of the returning string 
Return Values
Table 1287 STRING Function Return Values
Parameter  Description 


Returns a 
128.4.6 TERMINATE Procedure
When you are finished with the package, call the TERMINATE
procedure.
Note:
This procedure is deprecated with Release 11gR1 and, although currently supported, it should not be used.
Syntax
DBMS_RANDOM.TERMINATE;
128.4.7 VALUE Functions
The basic function gets a random number, greater than or equal to 0 and less than 1, with 38 digits to the right of the decimal (38digit precision). Alternatively, you can get a random Oracle number x, where x is greater than or equal to low
and less than high
.
Syntax
DBMS_RANDOM.VALUE RETURN NUMBER; DBMS_RANDOM.VALUE( low IN NUMBER, high IN NUMBER) RETURN NUMBER;
Parameters
Table 1288 VALUE Function Parameters
Parameter  Description 


Lowest number in a range from which to generate a random number. The number generated may be equal to 

Highest number below which to generate a random number. The number generated will be less than 
Return Values
Table 1289 VALUE Function Return Values
Parameter  Description 


Returns an Oracle Number 