生成随机的 0 或 1 - Oracle

3

我需要生成一个可以为0或1的随机值。我尝试了这个代码:select floor(DBMS_RANDOM.VALUE (0, 1)) from dual,但是得到1的概率非常非常低。有没有办法让0和1的可能性更加相似?


为什么不使用 round 而是使用 floor - Justin Cave
从双重选择 round(DBMS_RANDOM.VALUE (0, 1))。 - Rahul Tripathi
是的@JustinCave,你说得对,round函数就可以解决问题。谢谢大家。 - Aramillo
3个回答

6
尝试使用round而不是floor:
select round(DBMS_RANDOM.VALUE (0, 1)) from dual

4
DBMS_RANDOM.VALUE(0,1)永远不会返回1。参考文档

low 生成随机数的范围的最小值。生成的数字可能等于low。

high 生成随机数的范围的最大值,生成的数字将小于 high。

您需要:floor(DBMS_RANDOM.VALUE(0,2))

3
使用DBMS_RANDOM.RANDOM获取一个整数,然后使用mod(n,2)获取0(偶数)或1(奇数)。

1
这样做是可以的,但是当我执行 mod(DBMS_RANDOM.RANDOM,2) 时,我也会得到 -1 的值,我需要使用 abs,对吗? - Aramillo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接