最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用Java產(chǎn)生100個1-150間不重復(fù)數(shù)字

 更新時間:2017年02月21日 23:10:00   投稿:mdxy-dxy  
這篇文章主要介紹了用Java產(chǎn)生100個1-150間不重復(fù)數(shù)字,需要的朋友可以參考下

核心代碼

import java.util.Arrays;

/**
 * 用Java產(chǎn)生100個1-150的數(shù)字
 */
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("+++++++++++++++++===================+++++++++++++");
		
		// 對結(jié)果數(shù)組排序后再輸出
		Arrays.sort(resultArr);
		for (Integer num : resultArr) {
			System.out.println(num);
		}
	}

	/**
	 * 產(chǎn)生隨機數(shù)字
	 * @param minNum 最小數(shù)字
	 * @param maxNum 最大數(shù)字
	 * @param numCount 產(chǎn)生的數(shù)字個數(shù)
	 * @return 結(jié)果數(shù)組
	 */
	public static int[] produceNum(int minNum, int maxNum, int numCount) {
		
		// 入?yún)⑿r?
		// 如果隨機數(shù)的個數(shù)大于產(chǎn)生隨機數(shù)的范圍;或最大數(shù)小于最小數(shù)
		// 直接返回null,說明入?yún)⒉环弦?
		if (numCount > (maxNum - minNum + 1) || maxNum < minNum) {
			return null;
		}
		
		// 存放結(jié)果的數(shù)組
		int[] resultArr = new int[numCount];
		
		// count 記錄已產(chǎn)生的隨機數(shù)的個數(shù)
		int count = 0;
		
		while(count < numCount) {
			
			// 產(chǎn)生隨機數(shù)
			int num = (int) (Math.random() * (maxNum - minNum)) + minNum;
			
			// flag 定義本次產(chǎn)生的隨機數(shù)是否已在數(shù)組中
			boolean flag = true;
			
			// 遍歷數(shù)組中已產(chǎn)生的隨機數(shù)
			for (int i=0; i<count; i++) {
				
				// 同本次產(chǎn)生的隨機數(shù)最比較
				if (num == resultArr[i]) {
					
					// 如果已存在相同的值,則跳出for循環(huán),繼續(xù)外層的while循環(huán),產(chǎn)生下一個隨機數(shù)
					flag = false;
					break;
				}
			}
			
			// 如果本次產(chǎn)生的隨機數(shù)在數(shù)組中不存在,則將該隨機數(shù)存放在數(shù)組中
			if (flag) {
				resultArr[count] = num;
				
				// 數(shù)組中已產(chǎn)生的隨機數(shù)個數(shù)加1
				count++;
			}
		}
		
		return resultArr;
	}
}

代碼解讀

1 int num = (int) (Math.random() * (maxNum - minNum)) + minNum;
Math.random() 產(chǎn)生的是0~1 之間的double類型的隨機數(shù)
Math.random() * 10 便會得到 0 ~ 10 之間的隨機數(shù),轉(zhuǎn)int后便是0 ~ 9;如果給 Math.random() * 10 + 1,便是1 ~ 11 之間的隨機數(shù),轉(zhuǎn)int便是1 ~ 10。
這里的1 相當(dāng)于程序中的最小值,11則為最大值。
這樣便得到了產(chǎn)生隨機數(shù)的 (int) (Math.random() * (maxNum - minNum)) + minNum

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

相關(guān)文章

最新評論

郧西县| 曲沃县| 富裕县| 隆安县| 延安市| 鸡东县| 靖安县| 凤阳县| 吴江市| 寿光市| 乌拉特中旗| 来宾市| 徐闻县| 吴忠市| 古交市| 沧州市| 西宁市| 清远市| 宁国市| 泽州县| 丽江市| 永寿县| 财经| 同德县| 浠水县| 读书| 普格县| 略阳县| 五莲县| 新沂市| 高陵县| 东兴市| 罗田县| 田阳县| 霍州市| 昌乐县| 西充县| 科尔| 桦川县| 合江县| 苏尼特左旗|