gpt4 book ai didi

postgresql - 在postgresql的循环内生成随机数

转载 作者:行者123 更新时间:2023-11-29 12:40:02 25 4
gpt4 key购买 nike

我想执行几次(比方说 30 次)涉及随机数的“实验”

我的方法是:

select  
rnd
from
generate_series(0,30) as l, -- number of times
lateral (
select random() as rnd -- the "experiment"
) as t ;

您可以将其理解为“执行 30 次实验”。

问题在于该代码生成了 30 个精确数字。

注意:“实验”部分显然更复杂,但在其中某处,它会在每次实验运行 中创建数百个随机数。即我想生成那数百个随机数,30 次。这很重要,因为我知道我可以执行

select random() from generate_series(0,30)

并获得 30 个不同的随机数,但这不是我打算做的。

最佳答案

你的问题是 LATERAL 查询不依赖于左表表达式,所以 PostgreSQL 只计算一次。

要为左表表达式中的每一行计算一次,引入一个依赖关系:

SELECT rnd
FROM generate_series(0,30) as l -- number of times
CROSS JOIN LATERAL (
SELECT l.l * 0 + random() AS rnd -- the "experiment"
) AS t;

关于postgresql - 在postgresql的循环内生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55155403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com