MySQL使用rand函式實現隨機數

2021-09-22 20:27:19 字數 1933 閱讀 1640

sql 的隨機函式newid()和rand()

sql server的隨機函式newid()和rand()  

select * from northwind..orders order by newid()

--隨機排序

select top 10 * from northwind..orders order by newid()

--從orders表中隨機取出10條記錄  

示例  

a.對變數使用 newid 函式

以下示例使用 newid() 對宣告為 uniqueidentifier 資料型別的變數賦值。在測試 uniqueidentifier 資料型別變數的值之前,先輸出該值。

-- creating a local variable with declareset syntax.

declare @myid uniqueidentifier

set @myid = newid()

print 'value of @myid is '+ convert(varchar(255), @myid)

下面是結果集:

value of @myid is 6f9619ff-8b86-d011-b42d-00c04fc964ff

注意:newid 對每台計算機返回的值各不相同。所顯示的數字僅起解釋說明的作用。  

隨機函式:rand()

在查詢分析器中執行:select rand(),可以看到結果會是類似於這樣的隨機小數:0.36361513486289558,像這樣的小數在實際應用中用得不多,一般要取隨機數都會取隨機整數。那就看下面的兩種隨機取整數的方法:   

1、a:select floor(rand()*n) ---生成的數是這樣的:12.0

b:select cast( floor(rand()*n) as int) ---生成的數是這樣的:12   

2、a:select ceiling(rand() * n) ---生成的數是這樣的:12.0

b:select cast(ceiling(rand() * n) as int) ---生成的數是這樣的:12   

其中裡面的n是乙個你指定的整數,如100,可以看出,兩種方法的a方法是帶有.0這個的小數的,而b方法就是真正的整數了。

大致一看,這兩種方法沒什麼區別,真的沒區別?其實是有一點的,那就是他們的生成隨機數的範圍:

方法1的數字範圍:0至n-1之間,如cast( floor(rand()*100) as int)就會生成0至99之間任一整數

方法2的數字範圍:1至n之間,如cast(ceiling(rand() * 100) as int)就會生成1至100之間任一整數

對於這個區別,看sql的聯機幫助就知了:  

比較 ceiling 和 floor

ceiling 函式返回大於或等於所給數字表示式的最小整數。floor 函式返回小於或等於所給數字表示式的最大整數。例如,對於數字表示式 12.9273,ceiling 將返回 13,floor 將返回 12。floor 和 ceiling 返回值的資料型別都與輸入的數字表示式的資料型別相同。

現在,各位就可以根據自己需要使用這兩種方法來取得隨機數了^_^   

另外,還要提示一下各位菜鳥,關於隨機取得表中任意n條記錄的方法,很簡單,就用newid():

select top n * from table_name order by newid() ----n是乙個你指定的整數,表是取得記錄的條數.

access中的函式為rnd()

select top 10 表1.*, rnd(id) as bb from 表1 order by rnd(id)

select rnd(id) as me,rnd() as you from 表1

select top 10 tb_pess_*****.* from tb_pess_***** order by rnd(isnull(id)*0+1);

rand 函式使用

一般情況下,我們在生成隨機數的時候,都會用srand來獲取種子,再使用rand 函式生成隨機數。include include void main 結果確並不是跟設想的一樣產生隨機數 root localhost test a.out i 0,r 6 i 1,r 6 i 2,r 6 i 3,r 6 ...

rand 函式的使用

使用 執行結果說明隨機函式的使用 隨機數生成的原理 計算機產生的隨機數一般都只是乙個週期很長的數列,不是真的隨機數。也就是說,隨機數一般是偽隨機數,每個隨機數都是由隨機種子開始的乙個已定的數列 週期很長 一般地,為了隨機數更真一點,隨機種子在系統中通常是參照系統時鐘生成的。以上引用了別人的話。有幾個...

RAND MAX的使用及rand()函式使用

rand 不需要引數,它會返回乙個從0到最大隨機數的任意整數,最大隨機數的大小通常是固定的乙個大整數,一般為0x7fff rand 範圍是 0,rand max 如果說是 10rand 則對應的範圍應該為 0.0,10rand max 一般來說,rand b a 1 a 就表示 a b 之間的乙個隨...