sql開發中會有生成隨機數的需求,下面說幾種常用的需求和解決辦法(基於ms sql),最後總結出通用的辦法:
1、0-9間的隨機整數,包括0和9本身:
abs(checksum(newid()))%10
擴充套件從a-b間的隨機整數(a,b本身也是整數):
a+abs(checksum(newid()))%(b-a+1)
2、0-1間的隨機實數: rand()
--或是 rand(checksum(newid()))
--推薦使用後一種。
由此擴充套件從a-b間的隨機實數:
a+rand(checksum(newid()))*(b-a)
注意上面的取法使得取值範圍(a,b],若是想要取得(a,b),可以採用下面的表示式
a+rand(checksum(newid()))*(b-a)*0.99999 -- 此處0.99999可以更換為0.999999999,精度根據需要來取
ps:其中的rand() checksum() newid() abs()等函式請自行查閱聯機叢書或google
隨機數 偽隨機數
隨機數 偽隨機數 rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。srand unsigned seed 通過引數seed改變系統提供的種子值,從而可以使得每次呼...
隨機數生成 偽隨機數和真隨機數
c語言隨機數的生成,很隨機,又不隨機,比如像下面的程式 c語言生成隨機數的函式在stdlib.h庫中 include includeint main return 0 上面的 經過執行生成了 41 18467 6334 26500但是無論執行多好遍結果都是一樣的,隨機數並不隨機。這是因為rand 函...
隨機數 科普 真隨機數和偽隨機數
位元幣使用者很喜歡討論 非對稱加密 橢圓曲線 量子計算機 這類高深莫測的話題,然後再以一種非常莫名其妙的方式把幣弄丟,比如說 隨機 隨機很重要,對於位元幣這種密碼學電子貨幣來說,尤其重要。可惜社群內對於隨機的討論並不多,導致很多人缺乏正確的認識,因此,我們今天就和大家聊聊隨機。說到隨機,有兩個必須要...