建立一個新的隨機數生成器。
java
代碼以下 | 複製代碼 |
Random(long seed) |
使用單個 long 種子建立一個新的隨機數生成器。算法
咱們能夠在構造Random對象的時候指定種子,如:dom
代碼以下 | 複製代碼 |
Random r1 = new Random(20);jsp |
或者默認當前系統時間對http://www.111cn.net/jsp/Java/45403.htm 應的相對時間有關的數字做爲種子數:spa
代碼以下 | 複製代碼 |
Random r1 = new Random();.net |
種子數只是隨機算法的起源數字,和生成的隨機數字的區間無關。htm
二、Random類中的經常使用方法對象
下面對這些方法作一下基本的介紹:ci
代碼以下 | 複製代碼 |
a、public boolean nextBoolean()數學 |
該方法的做用是生成一個隨機的boolean值,生成true和false的值概率相等,也就是都是50%的概率。
代碼以下 | 複製代碼 |
b、public double nextDouble() |
該方法的做用是生成一個隨機的double值,數值介於[0,1.0)之間。
代碼以下 | 複製代碼 |
c、public int nextInt() |
該方法的做用是生成一個隨機的int值,該值介於int的區間,也就是-231到231-1之間。
若是須要生成指定區間的int值,則須要進行必定的數學變換,具體能夠參看下面的使用示例中的代碼。
代碼以下 | 複製代碼 |
d、public int nextInt(int n |
)
該方法的做用是生成一個隨機的int值,該值介於[0,n)的區間,也就是0到n之間的隨機int值,包含0而不包含n。
若是想生成指定區間的int值,也須要進行必定的數學變換,具體能夠參看下面的使用示例中的代碼。
代碼以下 | 複製代碼 |
e、public void setSeed(long seed) |
該方法的做用是從新設置Random對象中的種子數。設置完種子數之後的Random對象和相同種子數使用new關鍵字建立出
的Random對象相同。
三、Random類使用示例
使用Random類,通常是生成指定區間的隨機數字,下面就一一介紹如何生成對應區間的隨機數字。如下生成隨機數的
代碼均使用如下Random對象r進行生成:
代碼以下 | 複製代碼 |
Random r = new Random(); |
a、生成[0,1.0)區間的小數
代碼以下 | 複製代碼 |
double d1 = r.nextDouble(); |
直接使用nextDouble方法得到。
b、生成[0,5.0)區間的小數
代碼以下 | 複製代碼 |
double d2 = r.nextDouble() * 5; |
由於nextDouble方法生成的數字區間是[0,1.0),將該區間擴大5倍便是要求的區間。
同理,生成[0,d)區間的隨機小數,d爲任意正的小數,則只須要將nextDouble方法的返回值乘以d便可。
c、生成[1,2.5)區間的小數
代碼以下 | 複製代碼 |
double d3 = r.nextDouble() * 1.5 + 1; |
生成[1,2.5)區間的隨機小數,則只須要首先生成[0,1.5)區間的隨機數字,而後將生成的隨機數區間加1便可。
同理,生成任意非從0開始的小數區間[d1,d2)範圍的隨機數字(其中d1不等於0),則只須要首先生成[0,d2-d1)區間的
隨機數字,而後將生成的隨機數字區間加上d1便可。
d、生成任意整數
代碼以下 | 複製代碼 |
int n1 = r.nextInt(); |
直接使用nextInt方法便可。
e、生成[0,10)區間的整數
代碼以下 | 複製代碼 |
int n2 = r.nextInt(10); n2 = Math.abs(r.nextInt() % 10); |
以上兩行代碼都可生成[0,10)區間的整數
均勻分佈性
代碼以下 | 複製代碼 |
import java.util.Random; public class RandomDemo { /** * 小夥部落 * * @param args */ public static void main(String[] args) { Random r = new Random(); int n5 = r.nextInt(100); String ran = ""; if (n5 < 55) { //55個數字的區間,55%的概率 ran = "55%"; } else if (n5 < 95) {//[55,95),40個數字的區間,40%的概率 ran = "40%"; } else { ran = "5%"; //剩餘概率,你懂得! } System.out.println(ran); } } |