首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在BigQuery中获得随机整数?

如何在BigQuery中获得随机整数?
EN

Stack Overflow用户
提问于 2017-09-21 06:37:13
回答 2查看 15.2K关注 0票数 4

我想在BigQuery中得到0到9之间的随机整数。我试过经典的

代码语言:javascript
复制
SELECT CAST(10*RAND() AS INT64)

但它产生的数字介于0到10之间

添加这个问题可能会让习惯于在大多数其他语言中使用CAST执行TRUNC的程序员感到意外。

注意这种奇怪的结果分布:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-21 06:37:13

更新2019年:

现在你可以这么做了:

代码语言:javascript
复制
SELECT fhoffa.x.random_int(0,10)

(关于持久化UDF的博客文章)

要获得0到n之间的随机整数(在本例中为9),需要在FLOOR之前使用CAST

代码语言:javascript
复制
SELECT CAST(FLOOR(10*RAND()) AS INT64)

这是因为Standard没有指定CAST到integer应该是TRUNC还是ROUND抛出的浮点数。BigQuery标准SQL实现选择ROUND,因此CAST的经典公式不能按预期工作。确保指定要FLOOR (或TRUNC)随机数,然后指定CAST (以获得INT64而不是FLOAT)。

来自SQL标准:

每当将精确或近似的数值分配给精确数值站点时,其值在舍入或截断后保持前导重要数字的近似表示为目标的声明类型。该值被转换为具有目标的精度和规模。是截断还是循环的选择是实现定义的https://github.com/twitter/mysql/blob/master/strings/decimal.c#L42

票数 7
EN

Stack Overflow用户

发布于 2017-09-21 18:34:04

另一个选择是

代码语言:javascript
复制
SELECT MOD(CAST(10*RAND() AS INT64), 10)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46337033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档