8

非常に大きなランダムな整数である必要がある列バーを使用してテーブルfooを作成しているとしましょう。

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

これはこれを行うための最良の方法ですか?PostgreSQLのrandom()機能の品質について誰かが話すことができますか?ここでの乗算はエントロピーをマスクしていますか?

にフィードするハードウェアエントロピーが優れていることに注意してください/dev/random

4

1 に答える 1

13

Postgresql randomは、 POSIXerand48の独自のポータブル実装に基づいています。これは、48ビットドメインの線形合同PRNGです。

より強力なものが必要な場合は、暗号的に強力なエントロピーを生成するために使用されるpg_cryptoモジュールのgen_random_bytes関数を調べてください。

于 2012-03-22T05:08:32.747 に答える