MySQL获取随机数

如何经过MySQL在某个数据区间获取随机数?html

MySQL自己提供一个叫rand的函数,返回的v范围为0 <= v < 1.0。mysql

介绍此函数的MySQL文档也介绍道,能够经过此计算公式FLOOR(i + RAND() * (j – i)),获取i <= v < j的随机数字v。sql

附文档连接:http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_randide

 

为了书写、调用方便,写一个函数返回随机数字,注意,此函数为了遵应我的习惯,是使用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;
View Code

 

好比,要获取1-9的随机数,如此调用便可:spa

select rand_num(1, 9);
View Code
相关文章
相关标签/搜索