昨晚群里有人问如何写一个200到500的随机数,本来想很简单的,就是个rand函数。我还想应该马上写出来了,结果想了好久不知道怎么写,百度无果,只能继续想。我是这样想的,rand是返回0到1之间的数,乘以500就是返回0到500,怎么返回200到500呢,我想了加减乘除都没想出来。后来我看了问问题的那人写的语句,他是这样写的,floor( 200 + rand( ) *500 ),很明显这是返回200到700,我仔细一看,返回200到500不就是把这里的500改为300就好了,一试果然是问题解决。我再用round函数试了试结果也是对的,最后那个人采纳了round这个方案。
然后我就查资料比较floor、ceil和round的区别。Floor(X)是返回不大于 X 的最大整数值,比如mysql> SELECT FLOOR(1.23);
-> 1
mysql> SELECT FLOOR(-1.23);
- -2
mysql> SELECT CEILING(1.23);
-> 2
mysql> SELECT CEILING(-1.23);
- -1
mysql> SELECT ROUND(-1.23);
-> -1
mysql> SELECT ROUND(-1.58);
-> -2
mysql> SELECT ROUND(1.58);
-> 2
mysql> SELECT ROUND(1.298, 1);
-> 1.3
mysql> SELECT ROUND(1.298, 0);
-> 1
通过这个比较上面那个查询随机200到500还是用floor比较合适,因为floor能保证产生的数一直在这个区间,也就是200<X<500,而round的区间是200<=X<=500,差距不是很多,看你要不要那两个端点,根据实际情况运用。好啦,今天mysql就更到这儿,请大家以后有什么问题,尽管提,我会尽量回复,谢谢大家支持。
小技巧:若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1))。例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机整数, 可使用以下语句:SELECT FLOOR(7 + (RAND() * 6));



评论or提问点击发表评论或提问!