根據官方文件,rand()的取值範圍為[0,1)
若要在i ≤ r ≤ j 這個範圍得到乙個隨機整數r ,需要用到表示式floor(i + rand() * (j – i + 1))
例如, 若要在7 到 12 的範圍(包括7和12)內得到乙個隨機整數, 可使用以下語句:
select floor(7 + (rand() * 6));
用到了2個函式
1、floor(f)
返回乙個不大於f的最大整數
2、rand(),rand(n)
返回乙個隨機浮點值 v ,範圍在 0 到1 之間 (即, 其範圍為 0 ≤ v ≤ 1.0)。若已指定乙個整數引數 n ,則它被用作種子值,用來產生重複序列。
另外,也可以用round四捨五入函式來實現,考慮到最前與最後的取值概率會與中間的不相等,故加上0.5來消除這種概率上的差異,達到均勻分布:
產生[i,j]範圍正整數:select round(rand()*(j-i+1)+i-0.5)
若要在7 到 12 的範圍(包括7和12)內得到乙個隨機整數, 可使用以下語句:
select round( (rand() * 6+6.5));
如果產生負整數的話得注意最左邊的值有可能會超過你的要求:
mysql>select
round(-
0.5);+--
-----------+
|round(-
0.5) |+--
-----------+|-
1|+--
-----------+
1 row in
set (0.00
sec)
mysql
>
select
round(-
0.4);+--
-----------+
|round(-
0.4) |+--
-----------+|0
|+-------------+
1 row in
set (0.00 sec)
可以在產生正整數的情況下再減去乙個相應的值,得到乙個負整數範圍,不過用floor函式可以避免上面的問題。
在mysql中可以執行如下命令檢視某個主題的說明文件,即? 主題,如下:
mysql 隨機函式生成某個範圍內的整數
mysql中隨機生成一些範圍內的整數有時候是很有用的,用到了2個函式 1 floor f 返回乙個不大於f的最大整數 2 rand rand n 返回乙個隨機浮點值 v 範圍在 0 到1 之間 即,其範圍為 0 v 1.0 若已指定乙個整數引數 n 則它被用作種子值,用來產生重複序列。若要在i r ...
生成指定範圍的隨機數 生成某個範圍的隨機數
每次進行將本地 提交到遠端的時候總會要求輸入賬號和密碼 git push origin master 而且會彈出以下介面 我輸入賬號和密碼,明明是對的,卻提示登陸失敗 logon failed,use ctrl c to cancel basic credential prompt.會彈出這個登陸框...
mysql 隨機生成日期 隨機生成指定範圍的日期
在mssql中,有些商品會偽造一些評價,但是評價資訊可能會集中在一天或幾天內,現在需要把日期打散,平均分不到乙個日期段內,那麼這段 就有用了。無 declare evid int,pid int declare evaluate cursor for select evaluateid,produc...