MySQL中如何取隨機數

2021-08-20 10:09:50 字數 933 閱讀 4372

現在,假設需要產生234到5678之間的隨機整數,mysql下怎麼實現。

我們無法改mysql下rand的產生值,但我們可以改變我們的需求,

1、我們需要最小是234,最大是5678,rand產生的最小是0,最大是1,我們需求的數減去234看看?

最小數234 - 234 = 0,最大數5678 - 234 = 5444;嘿,亮點,我們需求的最小數跟rand產生的最小吻合了。

我們只要讓函式產生0到5444的隨機數,再拿來加上234,就是我們原需求了。

我們原需求用個偽表示式來描述,就會是

取整(rand(0,5444) + 234)

2、現在只要想辦法將我們需求再變一下,使得最小數為0 不變,最大數變化成1,

很明顯,5444減去5443就是1了,但這樣,最小數就會是負數了。

要最小數還是0,最大數是1,太簡單,5444 / 5444 = 1 , 0 /5444 = 0

現在,原需求的偽表示式就是:

取整(rand(0,1) * 5444 + 234)

3、把偽表示式的引數去掉,就跟mysql下的rand一樣寫法,一樣效果。取整函式我們使用四捨五入round

所以,我們原需求的最終真mysql表示式就是

round(rand() * 5444 + 234)

總結一下思路:

1、比較rand(x, y)與rand(0,1)的差異。

2、將rand(x,y)逐步向rand(0,1)變換

rand(x,y)

= rand(0, (y-x)) + x

= rand(0/(y-x), (y-x)/(y-x)) * (y-x) +x

= rand() * (y-x) + x

其中,y是最大值,x是最小值

如何取隨機數

在工作時遇到excel裡用到隨機數,發現在vba中,如果使用rnd取隨機數,實際上取到只是1 65535分之一,並且取到的這種偽隨機數順序還是一定的。如想用系統時間做種子在此範圍內取乙個數充當隨機數,需要在rnd的前面加上randomize。下面是我工作裡使用的一段vba 使用了系統時間做隨機種子 ...

mysql中取隨機資料

rand在手冊裡是這麼說的 rand rand n 例 如下 複製 select from table name order by rand limit 5 返回在範圍0到1.0內的隨機浮點值。如果乙個整數引數n被指定,它被用作種子值。如下 複製 mysql select rand 0.5925 m...

ojbc 取隨機數

隨機數的使用 1 arc4random 比較精確不需要生成隨機種子 使用方法 通過arc4random 獲取0到x 1之間的整數的 如下 int value arc4random x 獲取1到x之間的整數的 如下 int value arc4random x 1 2 ccrandom 0 1 coc...