Java 隨機數的產生

1、經過Math類的random()方法生成隨機數java

默認狀況下,Math.random()產生的隨機數範圍爲大於等於0小於1的double型隨機數。可是隻要對這個方法進行一些靈活的處理,就能夠獲取任意範圍的隨機數。dom

例1:(int)(Math.random()*n),此時會產生一個大於等於0小於n之間的隨機數。函數

說明:(int)只是截取整數部分,不會四捨五入。另外(int)只會轉換最近的。如(int)5.2/2.0=2.5;對象

(int)(5.2/2.0)=2。blog

例2: m +(int) (Math.random()*n),返回大於等於m小於m+n(不包括m+n)之間的隨機數。內存

           說明:要產生x到y的隨機數,先產生0到y – x的隨機數,而後加上x。好比:隨機數

              x + (int)(Math.random()*(y - x));程序

例3:(char)('a'+Math.random()*('z'-'a'+1));返回字符a~z之間的隨機字符。方法

         說明:一樣也能夠獲得A~Z之間的隨機字符。im

例4:(int)(Math.random()*50%33 + 2);產生2到35的隨機數。

注意:random()方法返回的值其實是僞隨機數,它經過複雜的運算獲得一系列的數。該方法是經過當前時間做爲隨機數生成器的參數,因此每次執行程序都會產生不一樣的隨機數。

2、經過Random類生成隨機數

java.util.Random有兩種構造方法,分別是Random()和Random(long seed)。Random()使用系統當前時間即System.currentTimeMills()做爲發生器種子。Random(long seed)使用指定的seed做爲發生器的種子。隨機數發生器(Random)對象產生之後,經過調用不一樣的方法得到不一樣類型的隨機數。

經常使用的方法:

說明:int型內存分配4個字節,共32位,所以最多能表示232個數。若是最高位是0的話,表示正數:0到231-1(減去1是由於從0開始)。若是最高位是1的話,表示負數:-231到0。

注意:若是兩個Random對象使用相同的種子,而且以相同的順序調用相同獲得函數那他們 的返回結果徹底相同。

例1:獲取指定範圍內的隨機數(隨機數控制在某個範圍內,使用求餘運算和Math.abs()方法)。

Random  r = new Random();

Math.abs( r.nextInt()%10); 返回0到10的隨機數。

相關文章
相關標籤/搜索