关于CONCAT(‘18‘,FLOOR(RAND()*X);
CONCAT(‘18’,FLOOR(RAND()*
((999999999-100000000)+100000000)
));
999999999
前面有2个括号
的时候,rand()函数去乘的是:
((999999999-100000000)+100000000)
=999999999
即 RAND()*999999999
但计算结果可能是8位数字,比如 RAND() =0.1,计算结果就是
8位,
所以说,999999999
前面有2个括号
的算法是错误的。
CONCAT(‘18’,FLOOR(RAND()*
(999999999-100000000)+100000000)
)
999999999
前面有1个括号
的时候,rand()函数去乘的是:
999999999-100000000
=899999999
再+100000000是为了保证有9位数,
总结,round()函数*((999999999-100000000)+100000000)
的写法是错误的,有可能会生成8位数字,经过CONCAT(‘18’,FLOOR())拼接成的手机号只有10位。
所以,应该使用 RAND()*(999999999-100000000)+100000000
这种算法来保证得到的结果有9位数。
September2024the21thSaturday