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;
View Code

 

比如,要獲取1-9的隨機數,如此調用即可:

select rand_num(1, 9);
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM