1. 程式人生 > >生成 一定範圍內的隨機數

生成 一定範圍內的隨機數

要獲得一個隨機數,有以下幾種方法:

(1)使用java.lang.Math

Double ran=Math.random();這樣就生成了一個0—1範圍內的double隨機數,要生成其它範圍內的隨機數,需要對其進行縮放,如生成01000範圍內的隨機數的程式碼如下:

Int myrandom=1000*(Math.random());

生成1001000範圍內的隨機數如下:

Int myrandom=100+(1000-100)(Math.random());需要注意的是double型數值轉換為int時,小數部分被直接去掉,因此得到的隨機數的均勻性收到一定影響。

2)使用java.util.Random

這個類提供了豐富的生成隨機數的方法。該類通過為其設定隨機數發生器的種子來產生隨機數序列。如果不給他提供種子,他就用當前時間作為種子。

他的一些方法如下:

nextBoolean:隨即產生一個布林值

nextInt 隨即產生一個int

nextLong 隨即產生一個Long

nextFloat 隨即產生一個Float

nextDouble隨即產生一個double

nextBytes 隨即產生一個位元組填充位元組數陣列

setSeed()方法設定隨即原的種子

例子如下:

/*

* 下面使用Random類生產隨機數

*/

Random ran=new Random();

ran.setSeed(125698233);

for(int i=0;i<5;i++)

{

System.out.println(ran.nextBoolean());

}

System.out.println();

for(int i=0;i<5;i++)

{

System.out.println(ran.nextInt(100));//隨即生產一個0100之內的數

}

System.out.println();

for(int i=0;i<5;i++)

{

System.out.println(ran.nextFloat());

}

System.out.println();

for(int i=0;i<5;i++)

{

System.out.println(ran.nextDouble());

}

System.out.println();

for(int

i=0;i<5;i++)

{

System.out.println(ran.nextLong());

}

3)使用java.security.SecureRandom

SecureRandom繼承了Random類,它能生成密碼強度的隨機數。該類能產生真正的隨機數,而不是偽隨機數。可以用長整數值或位元組陣列設定內部種子。如果不提供種子,SecureRandom例項將呼叫自行設定種子的方法來生成真正的隨機數。

使用如下:

SecureRandom s=new SecureRandom();

for(int i=0;i<5;i++)

{

System.out.println(s.nextInt(100));

}