Re: Force randomize within a set of numbers
From: Tiago <diariodastrilhas_at_gmail.com>
Date: Fri, 4 Dec 2009 04:38:43 -0800 (PST)
Message-ID: <14488a05-4004-4883-90d2-528d528da95e_at_n35g2000yqm.googlegroups.com>
On Dec 3, 7:01 pm, CrazyKarma <ska..._at_gmail.com> wrote:
> Is there way to force the randomize within a set of number in Oracle?
> Say I have a set of integers ( 2,8,6,5)
> and I want to force randomize function to randomly pick within that
> set only.
rndIntOk BOOLEAN := False ;
BEGIN
integers := tabIntegers( 2, 5, 10, 7, 3, 8, 11, 25, 0 ) ; FOR i IN integers.first..integers.last LOOP
minInteger := Least(NVL(minInteger,integers(i)), integers(i)); maxInteger := Greatest(NVL(maxInteger,integers(i)), integers(i)); END LOOP ;
LOOP
rndInteger := TRUNC( dbms_random.value(minInteger,maxInteger) ) ; FOR i IN integers.first..integers.last LOOP
END LOOP ;
EXIT WHEN rndIntOk ;
END LOOP ;
dbms_output.put_line(rndInteger);
END ; hth;
Date: Fri, 4 Dec 2009 04:38:43 -0800 (PST)
Message-ID: <14488a05-4004-4883-90d2-528d528da95e_at_n35g2000yqm.googlegroups.com>
On Dec 3, 7:01 pm, CrazyKarma <ska..._at_gmail.com> wrote:
> Is there way to force the randomize within a set of number in Oracle?
> Say I have a set of integers ( 2,8,6,5)
> and I want to force randomize function to randomly pick within that
> set only.
SET serveroutput ON
DECLARE
Type tabIntegers IS TABLE OF NUMBER ;
Integers tabIntegers ;
minInteger NUMBER ; maxInteger NUMBER ; rndInteger NUMBER ;
rndIntOk BOOLEAN := False ;
BEGIN
integers := tabIntegers( 2, 5, 10, 7, 3, 8, 11, 25, 0 ) ; FOR i IN integers.first..integers.last LOOP
minInteger := Least(NVL(minInteger,integers(i)), integers(i)); maxInteger := Greatest(NVL(maxInteger,integers(i)), integers(i)); END LOOP ;
LOOP
rndInteger := TRUNC( dbms_random.value(minInteger,maxInteger) ) ; FOR i IN integers.first..integers.last LOOP
IF rndInteger = integers(i) THEN rndIntOk := true ; EXIT ; END IF ;
END LOOP ;
EXIT WHEN rndIntOk ;
END LOOP ;
dbms_output.put_line(rndInteger);
END ; hth;
- T