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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java生成隨機整數的方法

Java生成隨機整數的方法

更新時間:2022-04-21 11:09:42 來源:動力節點 瀏覽1585次

在本文中,動力節點小編將向您展示三種在范圍內生成隨機整數的方法。

java.util.Random.nextInt

數學隨機

java.util.Random.ints (Java 8)

1. java.util.Random

這Random().nextInt(int bound)會生成一個從 0(包括)到 bound(不包括)的隨機整數。

(1)代碼片段。對于getRandomNumberInRange(5, 10),這將生成一個介于 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;
	}

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

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

	//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 個隨機整數的完整示例,范圍在 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. 數學.隨機

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

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

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

(2)生成16(含)到20(含)范圍內的10個隨機整數的完整示例。

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)生成一個從原點(包括)到綁定(不包括)的隨機整數。

(1)代碼片段。

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

(2)生成 33(含)到 38(含)范圍內的 10 個隨機整數的完整示例。

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(不含)之間的隨機整數,流大小為 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

 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久久毛片 | 欧美日韩国产人成在线观看 | 亚洲综合专区 | 欧美日韩亚洲在线观看 | 久久精品国产亚洲片 | 欧美成人鲁丝片在线观看 | 国产成人a毛片在线 | 精品一区二区久久 | 久久国产精品影院 | 67194老司机精品午夜 | 亚洲欧美日韩中文在线 | 狠狠亚洲丁香综合久久 | 一级a性色生活片毛片 | 黄网站www | 久久99热精品免费观看欧美 | 天天操夜夜爱 | 成人私人影院在线版 | 婷婷视频网站 | 亚洲人成依人成综合网 | 91伊人影院| 六月丁香婷婷综合 | 日日拍夜夜嗷嗷叫国产 | 深夜福利影院 | 亚洲成人高清在线观看 | 免费一级特黄欧美大片勹久久网 | 真实国产乱人伦在线视频播放 | 鸥美毛片 | 91在线视频网址 | 一级欧美日韩 | 欧美一级aa天码毛片 | 免费在线观看黄色小视频 | 久久一本综合 | 一级做受视频免费是看美女 | 有色视频在线观看免费高清 | 888米奇四色极速在线观看 | 一级国产视频 | 国产尤物福利视频在线观看 | 私人影院在线 | 久久精品国1国二国三 | 国产成人一区二区三中文 | 天天操视频 夜夜 |