生成 一定範圍內的隨機數
要獲得一個隨機數,有以下幾種方法:
(1)使用java.lang.Math類
Double ran=Math.random();這樣就生成了一個0—1範圍內的double隨機數,要生成其它範圍內的隨機數,需要對其進行縮放,如生成0到1000範圍內的隨機數的程式碼如下:
Int myrandom=1000*(Math.random());
生成100到1000範圍內的隨機數如下:
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));//隨即生產一個0到100之內的數
}
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
{
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));
}