Re: Re: RANDOM function? - Mailing list pgsql-novice

From ghaverla@freenet.edmonton.ab.ca
Subject Re: Re: RANDOM function?
Date
Msg-id Pine.A41.3.95.1010731054631.47568A-100000@freenet.edmonton.ab.ca
Whole thread Raw
In response to Re: RANDOM function?  ("macky" <macky@edsamail.com>)
Responses Re: Re: RANDOM function?  (Einar Karttunen <ekarttun@cs.Helsinki.FI>)
List pgsql-novice
On Tue, 31 Jul 2001, macky wrote:

> if ill be using big range of numbers sa 10000 woundd the be any possibility
> to have multiple items... meaning lets say 1234 will show up more than once?

It sounds like you are trying to draw a number from a finite
supply, WITHOUT REPLACEMENT.  I don't know how to attach
an external C (perl, ...?) function to PostgreSQL, but
I think you'll end up doing this.

Some of what I am describing can be done "virtually".
You will need to set up an array (stack, list) containing
all the possible integers you want to draw from.  Say
1, 2, 3, .... 100000.  Note that there are 100000
elements in the stack.  Now, draw a random (0 - 1)
floating point number.  If the 0-1 deviate lies between
(i-1)/N  and  i/N (where N is how many integers are in
our stack, and i is an index), we will withdraw the
i'th value from the stack as our random number (leaving
us with N-1 values in the stack).  We continuous to
withdraw numbers in this manner until we have either
withdrawn enough numbers, or we have exhausted the stack.

Gord

Matter Realisations     http://www.materialisations.com/
Gordon Haverland, B.Sc. M.Eng. President
101  9504 182 St. NW    Edmonton, AB, CA  T5T 3A7
780/481-8019            ghaverla @ freenet.edmonton.ab.ca
780/993-1274 (cell)


pgsql-novice by date:

Previous
From: Einar Karttunen
Date:
Subject: Re: RANDOM function?
Next
From: Einar Karttunen
Date:
Subject: Re: Re: RANDOM function?