Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> Re: Random numbers in Oracle

Re: Random numbers in Oracle

From: Matthias Gresz <GreMa_at_t-online.de>
Date: 1998/04/01
Message-ID: <6ft8r5$lcc$4@news02.btx.dtag.de>#1/1

Hi,

here's what Thomas Kyte from Oracle USA reposted on 1998/02/05

create or replace package random
is

        pragma restrict_references( random, WNDS, RNPS );

        procedure srand( new_seed in number );

        function rand return number;
        pragma restrict_references( rand, WNDS  );

        procedure get_rand( r OUT number );

        function rand_max( n IN number ) return number;
        pragma restrict_references( rand_max, WNDS);

        procedure get_rand_max( r OUT number, n IN number );

end random;
/

create or replace package body random
is

        multiplier      constant number         := 22695477;
        increment       constant number         := 1;
        "2^32"          constant number                 := 2 ** 32;
        "2^16"          constant number         := 2 ** 16;
        "0x7fff"        constant number         := 32767;
        Seed            number := 1;
--
        procedure srand( new_seed in number ) 
        is
        begin
                Seed := new_seed;
        end srand;
--
        function rand return number
        is
        begin
                seed := mod( multiplier * seed + increment, "2^32" );
                return bitand( seed/"2^16", "0x7fff" );
        end rand;
--
        procedure get_rand( r OUT number ) 
        is
        begin
                r := rand;
        end get_rand;
--
        function rand_max( n IN number ) return number 
        is
        begin
                return mod( rand, n ) + 1;
        end rand_max;
--
        procedure get_rand_max( r OUT number, n IN number ) 
        is
        begin
                r := rand_max( n );
        end get_rand_max;
--
begin
        select userenv( 'SESSIONID' ) into seed from dual;
end random;
/

 
Thomas Kyte
tkyte_at_us.oracle.com
Oracle Government
Bethesda MD
 

On Tue, 31 Mar 1998 08:12:43 -0600, srock_at_kinderhook.com wrote:


>How do I create a random number in Oracle??
>
>I tried an example in the Oracle Press book: Oracle PL/SQL Programming. It
>used the function BITAND, which I never saw before, and could find no
>documentation on it. Is this a typo, or legitamate function.
>
>Thanks for your help!
>
>Steven R.
>
>-----== Posted via Deja News, The Leader in Internet Discussion ==-----
>http://www.dejanews.com/ Now offering spam-free web-based newsreading
-- Regards Matthias Gresz :-) GreMa_at_T-online.de
Received on Wed Apr 01 1998 - 00:00:00 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US