說說隨機數

經常使用的java產生整型隨機數的方法有三種:java

Math.random()   Random.nextint()   Random.nextint(int)dom

基本功能:code

第一個產生0(包括)到1(不包括)之間的一個double類型的隨機數。class

第二個是產生一個沒有限制的隨機整數(可能爲負)效率

第三個是產生一個0(包括)到指定整數(不包括)之間的一個隨機正整數隨機數

使用方法:循環

第一個通常是Math.random()*int a 來拿到0到 a-1  (都包括)範圍的隨機數,若是是Math.random()*int a+int b  拿到的就是b到a+b-1(都包括)範圍的隨機數。程序

第二個通常是在 Random.nextint()後取餘,若想取得正的隨機數,配合結果取絕對值的寫法爲:Math.abs(random.nextInt())%(int a)   這樣拿到的就是0到a(不包括)之間的整數。方法

第三個使用較爲方便,能夠直接取到指定區間(不包括參數)的隨機數。若想不從零開始則加上指定int型。總結

總結:以上生成隨機數的方法無論是使用的方便程度和效率,第三種方法都佔有優點。緣由是它們底層都要調用Random.next()方法,但Math.random()調用了兩次,而Random.nextint()調用不會多於兩次。


升級版:

如何產生不重複的隨機數?

最容易想到的方法就是去重了,比較剔除以前已經出現的隨機數。

具體代碼以下:

Random  random = new Random();
    	int a[] = new int[4]; 
 		a[0] = random.nextInt(10);
 		for (int i = 1; i < a.length; i++) {
			a[i] = random.nextInt(10);
			for (int j = 0; j < i; j++) {
				if (a[i] == a[j]) {
					
					i--;
				}
			}
		}

以上代碼就產生4個0到10(不包括)之間的不重複的隨機數。

注意:必定要注意隨機的數的範圍要大於取值的個數,不然程序會進入死循環。

相關文章
相關標籤/搜索