程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL的指定規模隨機數函數rand()的應用技能

MySQL的指定規模隨機數函數rand()的應用技能

編輯:MySQL綜合教程

MySQL的指定規模隨機數函數rand()的應用技能。本站提示廣大學習愛好者:(MySQL的指定規模隨機數函數rand()的應用技能)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL的指定規模隨機數函數rand()的應用技能正文


公式以下:

rand() * (y-x) + x

我們學php的都曉得,隨機函數rand或mt_rand,可以傳入一個參數,發生0到參數之間的隨機整數,也能夠傳入兩個參數,發生這兩個參數之間的隨機整數。
而在mysql裡,隨機數函數rand不克不及傳參,發生的0到1之間的浮點數,如果我們須要在mysql發生年夜於1的隨機整數,該怎樣辦呢?
如許的需求其實不生疏,例如,咱做的文章體系,須要做弊,給文章的閱讀量隨機加上某個規模內的整數。

如今,假定須要發生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

這是一個很簡略的數學算術式,用一個簡略的例子,說了一下一些算法的根本技能:下降請求使得本身所控制的常識能到達需求。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved