假设我正在创建一个表foo,其中有一列bar,它应该是一个非常大的随机整数。
CREATE TABLE foo (
bar bigint DEFAULT round(((9223372036854775807::bigint)::double precision * random())) NOT NULL,
baz text
);
这是最好的方法吗?谁能谈谈 PostgreSQL 的 random()
函数的质量?这里的乘法是否掩盖了熵?
请注意,我确实将良好的硬件熵馈送到/dev/random
。
最佳答案
Postgresql随机是根据自己portable implementation POSIX erand48 .这是一个linear congruential PRNG在 48 位域中。
如果您需要更强大的功能,请查看 pg_crypto 模块的 gen_random_bytes用于产生加密强熵的函数。
关于postgresql - PostgreSQL 的 random() 函数的质量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9816114/