postgresql - PostgreSQL 的 random() 函数的质量?

标签 postgresql random prng entropy

假设我正在创建一个表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/

相关文章:

sql - 在 PostgreSQL 中合并两个 View

algorithm - 使用邻接规则随机化循环链表

security - 使用Fortuna PRNG :在计数器模式下使用AES进行随机访问加密

java - 如何从 int 数组中随机选择,然后删除所选元素

java - Java 中的默认种子 PRNG

python - 简单的 PRNG 算法有不同的 Python/C 输出 - 整数溢出差异?

ruby-on-rails - 由于字段不存在而创建不保存记录

node.js - 存储 GeoJson 点并在给定距离/半径内查找点 | NODEJS、Postgres、NestJs、TypeOrm

Postgresql 不接受远程连接

python - 调试 : Shuffle deck of cards in Python/random