From: | "Peter J(dot) Holzer" <hjp-pgsql(at)hjp(dot)at> |
---|---|
To: | pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: How to generate random bigint |
Date: | 2023-12-21 12:14:12 |
Message-ID: | 20231221121412.ksgegfafhv2q5blm@hjp.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 2023-12-21 00:06:39 -0600, Phillip Diffley wrote:
> Postgres's random() function generates a random double. That can be converted
> to a random int for smaller integers, but a double can't represent all of the
> values in a bigint. Is there a recommended way to generate a random bigint in
> Postgres?
Call random() twice and add the results?
Like this:
select (random() * 2147483648)::int8 * 4294967296
+ (random() * 4294967296)::int8;
(This assumes that random() actually returns at least 32 random bits.
If that's not the case you'll need more calls to random())
hp
--
_ | Peter J. Holzer | Story must make more sense than reality.
|_|_) | |
| | | hjp(at)hjp(dot)at | -- Charles Stross, "Creative writing
__/ | http://www.hjp.at/ | challenge!"
From | Date | Subject | |
---|---|---|---|
Next Message | Peter J. Holzer | 2023-12-21 12:25:28 | Re: Help understanding server-side logging (and more...) |
Previous Message | Julien Rouhaud | 2023-12-21 11:55:55 | Re: Help understanding server-side logging (and more...) |