8

假设我正在创建一个表foo,其列bar应该是一个非常大的随机整数。

CREATE TABLE foo (
    bar bigint DEFAULT round(((9223372036854775807::bigint)::double precision * random())) NOT NULL,
    baz text
);

这是最好的方法吗?谁能谈谈 PostgreSQLrandom()功能的质量?这里的乘法是否掩盖了熵?

请注意,我确实有很好的硬件熵输入/dev/random.

4

1 回答 1

13

Postgresql random 是基于他们自己的 POSIX erand48的可移植实现。它是 48 位域中的线性同余 PRNG 。

如果您需要更强大的东西,请查看 pg_crypto 模块的gen_random_bytes函数,该函数用于产生加密强熵。

于 2012-03-22T05:08:32.747 回答