gpt4 book ai didi

sql - 在 Netezza 中生成偶数随机范围

转载 作者:行者123 更新时间:2023-12-04 23:24:02 24 4
gpt4 key购买 nike

Netezza 说它的 random() 函数生成一个介于 0.0 和 0.99999 之间的浮点数...
我正在尝试在一个范围内(例如,5 到 10 之间)生成随机整数。互联网告诉我使用这样的等式将分数缩放到一个范围内的数字:

select f,count(*) from (
select CAST(5 + random() * (10-5) as INT) as f
from table_of_numbers
where number between 1 and 5000
) x group by 1 order by 1

但是,当我使用该代码时,样本中的极值代表性不足:
F    COUNT
5 486 <---
6 992
7 1057
8 1000
9 937
10 528 <---
有谁知道我该如何解决这个问题?

谢谢!

最佳答案

表达式 random()*(10-5)产生从 0 到 4.99999 的数字。但是,您有 6 个值的范围(5、6、7、8、9 和 10)。因此,您的表达式将 5 个值拆分为 6 个存储桶。

您的代码发现第一个和最后一个是半满的。显然,cast()操作是四舍五入而不是截断它们(我认为这不是 ANSI SQL,但它可以解释您观察到的结果)。这掩盖了问题。

尝试这个:

select CAST(4.5 + random() * (10-5+1) as INT) 

在其他数据库中,这样的事情应该可以工作:
select CAST(5 + random() * (10-5+1) as INT) 

关于sql - 在 Netezza 中生成偶数随机范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16488448/

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