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.

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
Received on Fri Dec 04 2009 - 06:38:43 CST

Original text of this message