假设我正在使用列 bar 创建一个表 foo ,该列应该是一个非常大的随机整数。
CREATE TABLE foo (
bar bigint DEFAULT round(((9223372036854775807::bigint)::double precision * random())) NOT NULL,
baz text
);
这是最好的方法吗?任何人都可以谈论PostgreSQL的random()
函数的质量吗?这里的乘法是否掩盖了熵?
请注意, do 具有良好的硬件熵,可以/dev/random
。
答案 0 :(得分:11)
Postgresql random基于他们自己的portable implementation POSIX erand48。它是48位域中的linear congruential PRNG。
如果你需要更强大的外观pg_crypto模块的gen_random_bytes函数,它用于产生加密强熵。