如何在postgresql中使用set seed选择可重复的随机数?

时间:2014-08-26 19:09:49

标签: sql postgresql random random-seed

我想要实现的是为流程选择一个控制组。为此,我使用random(),为了调试/一致性,我希望能够以可重复的方式设置随机数。意思是,我在分配用户123随机数.001后运行查询。在不同的时间我删除以前的数据,我调用相同的查询,并再次为用户123分配随机数.001。

我试过了:

SELECT setseed(0);
SELECT 1, random() from generate_series(1,10);

每次运行都会收到一个不同的随机数。

SELECT 1, setseed(0), random() from generate_series(1,10);

每行接收相同的随机数,这是无用的。

我确信这里有一些我不明白的东西。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

使用所需查询执行union all setseed()查询。必须匹配两个查询中的列类型。 setseed()会返回void

select setseed(0), null

union all

select null, random()
from generate_series(1, 10)

offset 1
;

offset 1子句从结果集中删除setseed() row