mysql里的rand()函数不同于java,随机数会有15位小数
随机数函:rand() * 10,产生0~0.999999999999999(小数点后15位)
1)配合floor函数产生随机正整数的公式
向下取整函数:floor(),正小数取整,负小数-1取整
用法:
select ceiling(10.1) ----> 10
select ceiling(-10.1) ----> -11
从min~max的随机正整数公式:select floor(最小值 + rand() * (最大值 + 1 - 最小值));
例如:
-- 查询5~10的随机正整数
SELECT FLOOR(5 + RAND() * (10 + 1 - 5));
为了方便理解,这里还原公式演变过程:
以5~10举例
rand() * 10 ----> 0 ~ 9.999999999999999
floor(rand() * 10) ----> 0 ~ 9
floor(5 + rand() * (10 - 5)) ----> 5 ~ 14
floor(5 + rand() * (10 + 1 - 5)) ---> 5 ~ 15
1)配合ceiling函数产生随机正整数的公式向上取整函数:
向上取整函数:ceiling(),正小数+1取整,负小数取整数
用法:
select ceiling(10.1) ----> 11
select ceiling(-10.1) ----> -10
从min~max的随机正整数公式:select ceiling(最小值 - 1 + rand()* (最大值 - (最小值 - 1)))
例如:
-- 查询5~10的随机正整数
select ceiling(5 - 1 + rand()* (10 - (5 - 1)))
随机负整数没有研究,应该改吧改吧就行了,毕竟负的项目里用的不会很多