程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 用Java產生100個1-150間不重復數字

用Java產生100個1-150間不重復數字

編輯:關於JAVA

用Java產生100個1-150間不重復數字。本站提示廣大學習愛好者:(用Java產生100個1-150間不重復數字)文章只能為提供參考,不一定能成為您想要的結果。以下是用Java產生100個1-150間不重復數字正文


核心代碼

import java.util.Arrays;

/**
 * 用Java產生100個1-150的數字
 */
public class RandomTest {

	public static void main(String[] args) {
		int[] resultArr = produceNum(1, 150, 100);
		for (Integer num : resultArr) {
			System.out.println(num);
		}
		
		System.out.println("+++++++++++++++++===================+++++++++++++");
		
		// 對結果數組排序後再輸出
		Arrays.sort(resultArr);
		for (Integer num : resultArr) {
			System.out.println(num);
		}
	}

	/**
	 * 產生隨機數字
	 * @param minNum 最小數字
	 * @param maxNum 最大數字
	 * @param numCount 產生的數字個數
	 * @return 結果數組
	 */
	public static int[] produceNum(int minNum, int maxNum, int numCount) {
		
		// 入參校驗
		// 如果隨機數的個數大於產生隨機數的范圍;或最大數小於最小數
		// 直接返回null,說明入參不符合要求
		if (numCount > (maxNum - minNum + 1) || maxNum < minNum) {
			return null;
		}
		
		// 存放結果的數組
		int[] resultArr = new int[numCount];
		
		// count 記錄已產生的隨機數的個數
		int count = 0;
		
		while(count < numCount) {
			
			// 產生隨機數
			int num = (int) (Math.random() * (maxNum - minNum)) + minNum;
			
			// flag 定義本次產生的隨機數是否已在數組中
			boolean flag = true;
			
			// 遍歷數組中已產生的隨機數
			for (int i=0; i<count; i++) {
				
				// 同本次產生的隨機數最比較
				if (num == resultArr[i]) {
					
					// 如果已存在相同的值,則跳出for循環,繼續外層的while循環,產生下一個隨機數
					flag = false;
					break;
				}
			}
			
			// 如果本次產生的隨機數在數組中不存在,則將該隨機數存放在數組中
			if (flag) {
				resultArr[count] = num;
				
				// 數組中已產生的隨機數個數加1
				count++;
			}
		}
		
		return resultArr;
	}
}

代碼解讀

1 int num = (int) (Math.random() * (maxNum - minNum)) + minNum;
Math.random() 產生的是0~1 之間的double類型的隨機數
Math.random() * 10 便會得到 0 ~ 10 之間的隨機數,轉int後便是0 ~ 9;如果給 Math.random() * 10 + 1,便是1 ~ 11 之間的隨機數,轉int便是1 ~ 10。
這裡的1 相當於程序中的最小值,11則為最大值。
這樣便得到了產生隨機數的 (int) (Math.random() * (maxNum - minNum)) + minNum

2 for (int i=0; i<count; i++) {
由於每次產生的num都是隨機的,所以無法保證重復的問題,所以只有通過去同已經產生的存在數組中的數字去比較,相同,則重新產生,不同,則添加進數組。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved