大战熟女丰满人妻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

 

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 青青青草视频在线观看 | 99久久免费精品国产免费高清 | 97影院午夜在线观看琪琪 | 日韩美女视频一区 | 亚洲欧美日韩在线不卡 | 欧美性狂猛bbbbbbxxxx | 国产手机在线精品 | 亚洲精品成人一区二区 | 亚洲国产精选 | 亚洲夂夂婷婷色拍ww47 | 欧美又粗又硬又大久久久 | 久久国产精品男女热播 | 欧洲亚洲视频 | 在线视频免费国产成人 | 亚洲区欧美区 | 夜夜夜爽 | 一级做a爱片久久蜜桃 | 欧美一级a毛片人人dvd | 91久久国产成人免费观看资源 | 欧美日韩一区二区在线观看视频 | 亚洲精品九色在线网站 | 色偷偷91久久综合噜噜噜 | 久久99久久精品97久久综合 | 99国产精品热久久久久久夜夜嗨 | 在线免费观看a视频 | 色香欲综合成人免费视频 | 视频免费1区二区三区 | 亚洲婷婷在线视频 | 成人性色生活片免费看爆迷你毛片 | 久久精品视频在线 | 国产99青草全福视在线 | 五月天丁香婷婷综合 | 国产亚洲欧美日韩综合综合二区 | 亚洲日本免费 | a极毛片| 久热免费在线观看 | xxx中国网站xxx | 91视频精品 | 日韩欧美色视频在线观看 | 男女性高清爱潮视频免费观看 | 在线久久 |