在MySQL中有没有办法生成一个可以是或为负的随机数?
例如,我想在-1.0
和1.0
之间加倍,而不是0.0
和1.0
之间的双倍,这是RAND()返回的内容。
答案 0 :(得分:6)
SELECT -1+2*RAND();
应该在-1.0和1.0之间返回一个双倍。
答案 1 :(得分:2)
通常,FLOOR(RAND() * <ScaleFactor> + <Offset>)
会生成一个带有比例和偏移量的随机数。
因此rand()
会在0
和1
之间返回随机数,如果我们将其缩放为2,则新范围将为0-2
,现在如果我们将其移动-1 ,它应该给你所需的结果-1 To +1
Select RAND() * 2 + (-1) as MyRandomNumber
答案 2 :(得分:1)
这将选择数字应为负数还是正数,并在RAND()
和-1.0
之间返回1.0
:
SELECT CASE WHEN ROUND(RAND()) = 0 THEN RAND()-1 ELSE RAND() END AS randNum