PostgreSQL的random()函数质量如何?

时间:2012-03-22 03:37:53

标签: postgresql random prng entropy

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

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

这是最好的方法吗?任何人都可以谈论PostgreSQL的random()函数的质量吗?这里的乘法是否掩盖了熵?

请注意, do 具有良好的硬件熵,可以/dev/random

1 个答案:

答案 0 :(得分:11)

Postgresql random基于他们自己的portable implementation POSIX erand48。它是48位域中的linear congruential PRNG

如果你需要更强大的外观pg_crypto模块的gen_random_bytes函数,它用于产生加密强熵。