Skip site navigation (1) Skip section navigation (2)

Re: Re: Re: RANDOM function?

From: Neal Lindsay <neal(dot)lindsay(at)peaofohio(dot)com>
To: pgsql-novice(at)postgresql(dot)org
Subject: Re: Re: Re: RANDOM function?
Date: 2001-07-31 13:19:15
Message-ID: 5.1.0.14.0.20010731091610.00a12730@mail.peaofohio.com (view raw or flat)
Thread:
Lists: pgsql-novice
I think that what you want to do is create a trigger (or rule?) that pulls 
up your random number and then checks to see if it exists already.  I 
haven't used triggers yet, but it should not be too hard.  Also, what 
happens when you declare a column unique, and a function like random() 
tries to give it a non-unique number?

At 03:58 PM 7/31/01 +0300, you wrote:
>On Tue, 31 Jul 2001 ghaverla(at)freenet(dot)edmonton(dot)ab(dot)ca wrote:
>
> >
> > 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.
> >
>That sounds very hard to implement effeciently. Could you send me some
>high level pseudocode? I think that a with 31 bit random integers the
>probablity to get the same value is very very small. If it is too big
>I can always change to bigints.
>
>- Einar Karttunen
>
>
>
>---------------------------(end of broadcast)---------------------------
>TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)


In response to

Responses

pgsql-novice by date

Next:From: ghaverlaDate: 2001-07-31 13:22:59
Subject: Re: Re: Re: RANDOM function?
Previous:From: ghaverlaDate: 2001-07-31 13:14:05
Subject: Re: Re: RANDOM function?

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group