mysql 隨機函式生成某個範圍內的整數

2022-03-11 03:52:56 字數 3458 閱讀 4562

根據官方文件,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...