如何通過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);
