大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java生成隨機(jī)整數(shù)的方法

Java生成隨機(jī)整數(shù)的方法

更新時(shí)間:2022-04-21 11:09:42 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1670次

在本文中,動(dòng)力節(jié)點(diǎn)小編將向您展示三種在范圍內(nèi)生成隨機(jī)整數(shù)的方法。

java.util.Random.nextInt

數(shù)學(xué)隨機(jī)

java.util.Random.ints (Java 8)

1. java.util.Random

這Random().nextInt(int bound)會(huì)生成一個(gè)從 0(包括)到 bound(不包括)的隨機(jī)整數(shù)。

(1)代碼片段。對(duì)于getRandomNumberInRange(5, 10),這將生成一個(gè)介于 5(含)和 10(含)之間的隨機(jī)整數(shù)。

	private static int getRandomNumberInRange(int min, int max) {
		if (min >= max) {
			throw new IllegalArgumentException("max must be greater than min");
		}
		Random r = new Random();
		return r.nextInt((max - min) + 1) + min;
	}

(2)什么是 (max – min) + 1) + min?

上面的公式將生成一個(gè)介于 min(含)和 max(含)之間的隨機(jī)整數(shù)。

	//Random().nextInt(int bound) = Random integer from 0 (inclusive) to bound (exclusive)	
	//1. nextInt(range) = nextInt(max - min)
	new Random().nextInt(5);  // [0...4] [min = 0, max = 4]
	new Random().nextInt(6);  // [0...5]
	new Random().nextInt(7);  // [0...6]
	new Random().nextInt(8);  // [0...7]
	new Random().nextInt(9);  // [0...8]
	new Random().nextInt(10); // [0...9]			
	new Random().nextInt(11); // [0...10]	
	//2. To include the last value (max value) = (range + 1)
	new Random().nextInt(5 + 1)  // [0...5] [min = 0, max = 5]
	new Random().nextInt(6 + 1)  // [0...6]
	new Random().nextInt(7 + 1)  // [0...7]
	new Random().nextInt(8 + 1)  // [0...8]
	new Random().nextInt(9 + 1)  // [0...9]
	new Random().nextInt(10 + 1) // [0...10]			
	new Random().nextInt(11 + 1) // [0...11]	
	//3. To define a start value (min value) in a range,
	//   For example, the range should start from 10 = (range + 1) + min
	new Random().nextInt(5 + 1)  + 10 // [0...5]  + 10 = [10...15]
	new Random().nextInt(6 + 1)  + 10 // [0...6]  + 10 = [10...16]
	new Random().nextInt(7 + 1)  + 10 // [0...7]  + 10 = [10...17]
	new Random().nextInt(8 + 1)  + 10 // [0...8]  + 10 = [10...18]
	new Random().nextInt(9 + 1)  + 10 // [0...9]  + 10 = [10...19]
	new Random().nextInt(10 + 1) + 10 // [0...10] + 10 = [10...20]
	new Random().nextInt(11 + 1) + 10 // [0...11] + 10 = [10...21]	
	// Range = (max - min)
	// So, the final formula is ((max - min) + 1) + min	
	//4. Test [10...30]
	// min = 10 , max = 30, range = (max - min)
	new Random().nextInt((max - min) + 1) + min
	new Random().nextInt((30 - 10) + 1) + 10
	new Random().nextInt((20) + 1) + 10
	new Random().nextInt(21) + 10    //[0...20] + 10 = [10...30]	
	//5. Test [15...99]
	// min = 15 , max = 99, range = (max - min)
	new Random().nextInt((max - min) + 1) + min
	new Random().nextInt((99 - 15) + 1) + 15
	new Random().nextInt((84) + 1) + 15
	new Random().nextInt(85) + 15    //[0...84] + 15 = [15...99]	
	//Done, understand?

(3)生成 10 個(gè)隨機(jī)整數(shù)的完整示例,范圍在 5(含)和 10(含)之間。

package com.mkyong.example.test;
import java.util.Random;
public class TestRandom {
	public static void main(String[] args) {
		for (int i = 0; i < 10; i++) {
			System.out.println(getRandomNumberInRange(5, 10));
		}
	}
	private static int getRandomNumberInRange(int min, int max) {
		if (min >= max) {
			throw new IllegalArgumentException("max must be greater than min");
		}
		Random r = new Random();
		return r.nextInt((max - min) + 1) + min;
	}
}

輸出

7
6
10
8
9
5
7
10
8
5

2. 數(shù)學(xué).隨機(jī)

這Math.random()給出了一個(gè)從 0.0(包括)到 1.0(不包括)的隨機(jī)雙精度值。

(1)代碼片段。參考1.2,或多或少是相同的公式。

	(int)(Math.random() * ((max - min) + 1)) + min

(2)生成16(含)到20(含)范圍內(nèi)的10個(gè)隨機(jī)整數(shù)的完整示例。

package com.mkyong.example.test;
public class TestRandom {
	public static void main(String[] args) {
		for (int i = 0; i < 10; i++) {
			System.out.println(getRandomNumberInRange(16, 20));
		}
	}
	private static int getRandomNumberInRange(int min, int max) {
		if (min >= max) {
			throw new IllegalArgumentException("max must be greater than min");
		}
		return (int)(Math.random() * ((max - min) + 1)) + min;
	}
}

輸出

17
16
20
19
20
20
20
17
20
16

3.Java 8 Random.ints

在 Java 8 中,添加了新方法java.util.Random

	public IntStream ints(int randomNumberOrigin, int randomNumberBound)
	public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound) 

這Random.ints(int origin, int bound)或Random.ints(int min, int max)生成一個(gè)從原點(diǎn)(包括)到綁定(不包括)的隨機(jī)整數(shù)。

(1)代碼片段。

	private static int getRandomNumberInRange(int min, int max) {	
		Random r = new Random();
		return r.ints(min, (max + 1)).findFirst().getAsInt();
	}

(2)生成 33(含)到 38(含)范圍內(nèi)的 10 個(gè)隨機(jī)整數(shù)的完整示例。

package com.mkyong.form.test;
import java.util.Random;
public class TestRandom {
	public static void main(String[] args) {
		for (int i = 0; i < 10; i++) {
			System.out.println(getRandomNumberInRange(33, 38));
		}
	}
	private static int getRandomNumberInRange(int min, int max) {	
		Random r = new Random();
		return r.ints(min, (max + 1)).limit(1).findFirst().getAsInt();		
	}	
}

輸出 

34
35
37
33
38
37
34
35
36
37

(3)額外,供自己參考。

生成范圍在 33(含)和 38(不含)之間的隨機(jī)整數(shù),流大小為 10。并打印出帶有forEach.

	//Java 8 only
	new Random().ints(10, 33, 38).forEach(System.out::println);

輸出

34
37
37
34
34
35
36
33
37
34

 

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 天天摸日日舔 | 久久久国产免费影院 | 玖玖国产精品视频 | 欧美一级第一免费高清 | 最新国产在线精品91尤物 | 爱爱免费观看高清视频在线播放 | 成年女人色毛片 | 97在线免费观看视频 | 四虎国产永久在线精品免费观看 | 黄色大全网站 | 777777农村一级毛片 | 久久国产视频在线观看 | 亚洲人成一区二区不卡 | 日不卡在线| 久久精品久久久久 | 99视频久久 | 任我鲁精品视频精品 | 国产91精品久久久久999 | 欧美一区二区三区免费观看视频 | 久久666| 午夜一级毛片免费视频 | 青青青青久久精品国产h | 中文字幕伦视频 | 精品 日韩 国产 欧美在线观看 | 99在线观看精品视频 | 亚洲天堂一区二区三区四区 | 日本一区二区在线 | 综合久久久久久 | 国产成人精品s8sp视频 | 久久久久综合精品福利啪啪 | 国产亚洲精品一品区99热 | 亚洲精品在线视频 | 久久久久久免费精品视频 | 美女视频很黄很黄又免费的 | 色综合亚洲七七久久桃花影院 | 欧美一级影院 | 国产免费播放 | 99久久综合精品免费 | 精品中文字幕在线 | 波多野结衣手机视频一区 | a一级网站 |