Java Random 隨機(jī)數(shù)的用法小結(jié)
一、Random 類的基本用法
(一)導(dǎo)入類
在 Java 中,Random
類位于 java.util
包中,因此在使用之前需要導(dǎo)入該包。
import java.util.Random;
(二)創(chuàng)建 Random 對(duì)象
可以通過(guò)以下兩種方式創(chuàng)建 Random
對(duì)象:
Random random = new Random(); // 或者指定種子 Random random = new Random(long seed);
種子用于初始化隨機(jī)數(shù)生成器的起始狀態(tài)。相同的種子會(huì)生成相同的隨機(jī)數(shù)序列。
(三)生成隨機(jī)整數(shù)
使用 nextInt()
方法可以生成一個(gè)隨機(jī)整數(shù)。如果不指定參數(shù),它將返回一個(gè)介于 Integer.MIN_VALUE
和 Integer.MAX_VALUE
之間的隨機(jī)整數(shù)。如果指定一個(gè)參數(shù) n
,它將返回一個(gè)介于 0
(包含)和 n
(不包含)之間的隨機(jī)整數(shù)。
Random random = new Random(); int randomInt = random.nextInt(); // 生成任意隨機(jī)整數(shù) int randomIntBetween0And10 = random.nextInt(10); // 生成0到9之間的隨機(jī)整數(shù)
(四)生成隨機(jī) double 值
使用 nextDouble()
方法可以生成一個(gè)介于 0.0
(包含)和 1.0
(不包含)之間的隨機(jī)雙精度浮點(diǎn)數(shù)。
Random random = new Random(); double randomDouble = random.nextDouble();
(五)生成隨機(jī) boolean 值
使用 nextBoolean()
方法可以生成一個(gè)隨機(jī)的布爾值,true
和 false
的概率各為 50%。
Random random = new Random(); boolean randomBoolean = random.nextBoolean();
(六)生成隨機(jī) float 值
使用 nextFloat()
方法可以生成一個(gè)介于 0.0
(包含)和 1.0
(不包含)之間的隨機(jī)單精度浮點(diǎn)數(shù)。
Random random = new Random(); float randomFloat = random.nextFloat();
(七)生成隨機(jī) long 值
使用 nextLong()
方法可以生成一個(gè)介于 Long.MIN_VALUE
和 Long.MAX_VALUE
之間的隨機(jī)長(zhǎng)整數(shù)。
Random random = new Random(); long randomLong = random.nextLong();
二、Random 類的高級(jí)用法
(一)生成指定范圍內(nèi)的隨機(jī)數(shù)
在實(shí)際開(kāi)發(fā)中,我們常常需要生成指定范圍內(nèi)的隨機(jī)數(shù)。以下是生成指定范圍隨機(jī)數(shù)的方法:
Random random = new Random(); // 生成 [min, max) 范圍內(nèi)的隨機(jī)整數(shù) int min = 10; int max = 20; int randomInRange = random.nextInt(max - min) + min; // 生成 [min, max) 范圍內(nèi)的隨機(jī) double 值 double minDouble = 1.0; double maxDouble = 10.0; double randomDoubleInRange = random.nextDouble() * (maxDouble - minDouble) + minDouble;
(二)生成隨機(jī)字符串
有時(shí)我們需要生成隨機(jī)字符串,例如用于生成驗(yàn)證碼或隨機(jī)密碼。以下是一個(gè)生成隨機(jī)字符串的示例:
import java.util.Random; public class RandomStringGenerator { private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; public static String generateRandomString(int length) { Random random = new Random(); StringBuilder sb = new StringBuilder(length); for (int i = 0; i < length; i++) { int index = random.nextInt(CHARACTERS.length()); sb.append(CHARACTERS.charAt(index)); } return sb.toString(); } public static void main(String[] args) { String randomString = generateRandomString(10); System.out.println("隨機(jī)字符串: " + randomString); } }
(三)洗牌算法
Random
類可以用于實(shí)現(xiàn)洗牌算法,隨機(jī)打亂數(shù)組中的元素順序。以下是一個(gè)使用 Random
的洗牌示例:
import java.util.Random; public class ShuffleExample { public static void shuffleArray(int[] array) { Random random = new Random(); for (int i = array.length - 1; i > 0; i--) { int j = random.nextInt(i + 1); // 交換元素 int temp = array[i]; array[i] = array[j]; array[j] = temp; } } public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; System.out.println("原始數(shù)組:"); for (int num : array) { System.out.print(num + " "); } shuffleArray(array); System.out.println("\n洗牌后的數(shù)組:"); for (int num : array) { System.out.print(num + " "); } } }
三、Math.random() 的用法
除了 Random
類之外,Java 還提供了一個(gè)更簡(jiǎn)單的隨機(jī)數(shù)生成方法:Math.random()
。它返回一個(gè)介于 0.0
(包含)和 1.0
(不包含)之間的隨機(jī)雙精度浮點(diǎn)數(shù)。
double randomValue = Math.random();
如果需要生成指定范圍內(nèi)的隨機(jī)數(shù),可以結(jié)合 Math.random()
和一些簡(jiǎn)單的數(shù)學(xué)運(yùn)算來(lái)實(shí)現(xiàn)。
// 生成 [min, max) 范圍內(nèi)的隨機(jī)整數(shù) int min = 10; int max = 20; int randomInt = (int) (Math.random() * (max - min)) + min; // 生成 [min, max) 范圍內(nèi)的隨機(jī) double 值 double minDouble = 1.0; double maxDouble = 10.0; double randomDouble = Math.random() * (maxDouble - minDouble) + minDouble;
四、總結(jié)
Random
類和 Math.random()
是 Java 中生成隨機(jī)數(shù)的兩種主要方式。Random
類提供了更豐富的功能,適用于需要生成多種類型隨機(jī)數(shù)的場(chǎng)景;而 Math.random()
更加簡(jiǎn)潔,適用于簡(jiǎn)單的隨機(jī)數(shù)生成需求。掌握這些隨機(jī)數(shù)生成方法,可以在實(shí)際開(kāi)發(fā)中靈活應(yīng)用,為程序增添更多隨機(jī)性和趣味性。
到此這篇關(guān)于Java Random 隨機(jī)數(shù)的用法小結(jié)的文章就介紹到這了,更多相關(guān)Java Random 隨機(jī)數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Java雙大括號(hào){{}}的具體使用
本文主要介紹了關(guān)于Java雙大括號(hào){{}}的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07在已經(jīng)使用mybatis的項(xiàng)目里引入mybatis-plus,結(jié)果不能共存的解決
這篇文章主要介紹了在已經(jīng)使用mybatis的項(xiàng)目里引入mybatis-plus,結(jié)果不能共存的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03SpringBoot中@Value獲取值和@ConfigurationProperties獲取值用法及比較
在Spring Boot中,@Value注解是一個(gè)非常有用的特性,它允許我們將外部的配置注入到我們的Bean中,@ConfigurationProperties用于將配置文件中的屬性綁定到 Java Bean 上,本文介紹了@Value獲取值和@ConfigurationProperties獲取值用法及比較,需要的朋友可以參考下2024-08-08springboot接收J(rèn)SON實(shí)現(xiàn)示例解析
這篇文章主要為大家介紹了springboot如何接收J(rèn)SON的實(shí)現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07SpringBoot ResponseEntity標(biāo)識(shí)Http響應(yīng)方式
這篇文章主要介紹了SpringBoot ResponseEntity標(biāo)識(shí)Http響應(yīng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07Spring Data JPA實(shí)現(xiàn)動(dòng)態(tài)查詢的兩種方法
本篇文章主要介紹了Spring Data JPA實(shí)現(xiàn)動(dòng)態(tài)查詢的兩種方法,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04