如何用SQL生成仅为-1或+1的随机正负值?
解决经纬度随机正负偏移(仅生成-1或1)
以下几种SQL写法均可实现仅生成-1或1的随机值:
方法1:用CASE语句判断随机值
SELECT CASE WHEN RAND() > 0.5 THEN 1 ELSE -1 END;
原理:RAND()生成0到1之间的随机数,当随机数大于0.5时返回1,否则返回-1,两种结果的概率各约50%。
方法2:用SIGN函数结合随机数偏移
SELECT SIGN(RAND() * 2 - 1);
原理:RAND() * 2 - 1生成-1到1之间的随机数,SIGN()函数对该数取符号:大于0返回1,小于0返回-1。理论上存在随机数等于0的可能,但实际概率极低,可忽略。
方法3:用FLOOR函数生成整数后转换
SELECT FLOOR(RAND() * 2) * 2 - 1;
原理:FLOOR(RAND() * 2)随机生成0或1,乘2后得到0或2,再减1即得到-1或1,结果分布均匀。
内容的提问来源于stack exchange,提问作者ABBOV
相关产品推荐
相关产品推荐

