SQL Server產生指定範圍內的隨機數

來源:互聯網
上載者:User

標籤:

在開發中很多時候,我們都會遇到這種需要產生一個指定範圍隨機數的情況。而且在很多語言中比如Java、C#、SQl等,都會有一個函數產生一個類似於0.234273983423789的隨機小數,而所有的隨機數都是通過這個最基本的隨機數(0.234273983423789)變化過來的。


下面我說一下產生指定範圍隨機數的思路,比如我要產生一個100-999範圍內的隨機數,我就要保證我寫的產生隨機數的運算式所產生的值,最大是999,最小是100。還有就是要明白一個數學裡的小道理,0.99去乘一個數字所得的結果約等於這個數但不等於這個數。什麼意思呢?就是0.999*9000的結果肯定是等於8999.9999...的,一會兒用用到這個思想。

這裡我再介紹兩個函數,一會兒會用到。
floor():會返回一個小於等於當前數的最小整數 floor(2.5)=2
ceiling():和上個函數相反,會返回一個大於等於當前數的最大整數 ceiling(2.5)=3

最後看代碼(隨機產生一個100-999的隨機數)


產生一個100-999的隨機數,包括100和999

SELECT FLOOR(RAND()*900)+100

下面我們分析一下這段代碼,首先從最裡面開始,rand()會產生一個0.000000..到0.999999..的隨機數,然後這個隨機數乘以900以後 就會產生一個0到899...的隨機數,最後在給它加上100,就會產生一個100到(899+100)的隨機數也就是100到999的隨機數


以下代碼能輸出所有的隨機數,直到出現100或者999停止迴圈

 1 declare @rand int 2 WHILE 1=1 3     BEGIN 4     SET @rand=FLOOR(RAND()*900)+100 5     PRINT @rand 6     IF @rand=100 or @rand=999 7         begin 8         break 9         end10     end

如果有更好的方法大家可以評論私信!一起交流!

 

 

這裡還有一種比較好的方法,但是不太好理解,大家可以記下來。

 

 1 DECLARE @Result INT 2 DECLARE @Upper INT 3 DECLARE @Lower INT 4   5 SET @Lower = 1      --包括左邊的數 6   7 SET @Upper = 11     --不包括右邊的數 8   9                     --[left,right)10  11 SELECT @Result = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)12 SELECT @Result

作者連絡方式:[email protected]

 

如有轉寄 請務必標明原文地址 謝謝!

 

SQL Server產生指定範圍內的隨機數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.