MySQL获取随机数
如何通过MySQL在某个数据区间获取随机数?
MySQL本身提供一个叫rand的函数,返回的v范围为0 <= v < 1.0。
介绍此函数的MySQL文档也介绍道,可以通过此计算公式FLOOR(i + RAND() * (j – i)),获取i <= v < j的随机数字v。
附文档链接:http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand
为了书写、调用方便,写一个函数返回随机数字,注意,此函数为了遵应个人习惯,是使用FLOOR(i + RAND() * (j – i + 1))这样的公式,随机数v的范围为i <= v <= j,而非i <= v < j。
CREATE FUNCTION rand_num (
start_num INTEGER,
end_num INTEGER
) RETURNS INTEGER
BEGIN
RETURN FLOOR(start_num + RAND() * (end_num - start_num + 1));
END;
比如,要获取1-9的随机数,如此调用即可:
select rand_num(1, 9);
作者:Nick Huang 博客:http://www.cnblogs.com/nick-huang/ 本博文为学习、笔记之用,以笔记记录作者学习的知识与学习后的思考或感悟。学习过程可能参考各种资料,如觉文中表述过分引用,请务必告知,以便迅速处理。如有错漏,不吝赐教。