如何在postgres sql中使用setseed选择可重复的随机数?

问题描述 投票:0回答:2

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

我已经尝试过:

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

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

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

每一行收到相同的随机数,这是没有用的。

我确信这里有一些我不明白的地方。 如有任何帮助,我们将不胜感激。

sql postgresql random random-seed
2个回答
6
投票

使用所需的查询执行

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


0
投票

我在@ClodoaldoNeto 答案中发现了一个小补充,以消除额外的空列

select null from (select setseed(0))
union all
select random()
from generate_series(1, 10)
offset 1;
© www.soinside.com 2019 - 2024. All rights reserved.