SQL Server 從一組數字中隨機獲取乙個數

2022-06-07 01:00:09 字數 1517 閱讀 6304

很多人在開發需求中想獲取乙個隨機數,或者從一組數字中獲取乙個數, 這個需求很簡單,而且有很多方式可以實現,下面就介紹幾種常見的方式,以作為筆記或供有需要的人參考.

比如有一組數字: 57 59 63 66 89 92 95,我們要從中隨機取出乙個:

方法一: 建表
--

建立中間表存放隨機數字

create

table rand_number(id int

identity,num int

);insert

into

dbo.rand_number

( num )

--57 59 63 66 89 92 95

values ( 57 ),( 59 ),( 63 ),( 66 ),( 89 ),( 92 ),( 95 );

取隨機數
select  num from dbo.rand_number where id=

round(rand()*6+

1,0);

方法二: 不建表(cte虛擬表)
;with temp_table as

(

select

1 id,57 num union

allselect

2 id,59 num union

allselect

3 id,63 num union

allselect

4 id,66 num union

allselect

5 id,89 num union

allselect

6 id,92 num union

allselect

7 id,95

num)

select num from temp_table where id=

round(rand()*6+

1,0);

方法三:  不建表 (派生表)
select

top1 num from

(

select

57 num union

allselect

59union

allselect

63union

allselect

66union

allselect

89union

allselect

92union

allselect

95)t

order

bynewid();

隨機輸出一組數字 洗牌演算法

要求高效。思路一 s時間上高效必然是空間上換來的,思路關鍵為 boolean nm new boolean 100 將出現過的數字在陣列中做下標記。時間複雜度為 o n 輸出結果圖 思路二 上述 中有乙個缺陷,最後乙個數生成時,會需要較大的時間去除之前的重複數字。根據洗牌演算法得到的思路為,先將陣列...

在一組字元中查詢

include using namespace std define scuess 1 define false 0 int find char char strings,char value return false main void 字元陣列的表示cout find char str,c en...

java 一組數字的查重演算法

今天程式設計遇到了乙個陣列查重假排序的問題,以為很簡單做起來還真有點費勁。特此參考網上和自己思考動手寫了幾個查重演算法,記錄下來以備檢視。演算法一 思想 本演算法利用了set介面的實現類不能新增重複元素的特性,同時treeset實現類中新增的元素是按照順序排列的特點解決了查重和排序兩個問題 使用se...