欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java如何生成隨機(jī)數(shù)不了解下嗎

 更新時(shí)間:2023年08月17日 16:37:15   作者:編程火箭車  
我們在學(xué)習(xí) Java 基礎(chǔ)時(shí)就知道可以生成隨機(jī)數(shù),可以為我們枯燥的學(xué)習(xí)增加那么一丟丟的樂趣,本文就來和大家介紹Java生成隨機(jī)數(shù)的常用方法,需要的可以參考下

一、Random類介紹

在 Java 中使用 Random 工具類來生成隨機(jī)數(shù),該類在 java.util 包下,在 JDK1.0 版本就存在了。Random 單詞本身就是隨機(jī)、隨意、任意的意思。Random 是一個(gè)普通類,所以在使用時(shí)需要?jiǎng)?chuàng)建 Random 對象,在調(diào)用其提供的方法。

public class Random implements java.io.Serializable {}

Random 類提供了諸多方法,如下圖:

二、Random類生成隨機(jī)數(shù)

1.生成隨機(jī)數(shù)

在 Java 中,可以使用 java.util.Random 類來生成隨機(jī)數(shù)。 Random 類提供了多個(gè)方法來生成不同種類的隨機(jī)數(shù),例如 nextInt()、nextDouble() 等。

我們這里演示如何生成一個(gè)介于0到9之間的隨機(jī)整數(shù):

import java.util.Random;
public class RandomTest {
    public static void main(String[] args) {
        // 創(chuàng)建Random實(shí)例
        Random random = new Random();
        // 生成0到9之間的隨機(jī)數(shù)
        int randomNum = random.nextInt(10); 
        System.out.println(randomNum);
    }
}

在上面的示例代碼中,首先創(chuàng)建了一個(gè) Random 對象,然后使用 nextInt() 方法生成一個(gè)介于0到9之間的隨機(jī)整數(shù),并將結(jié)果打印到控制臺(tái)上。

2.nextInt()方法

nextInt(int bound) 方法是 Random 類的一個(gè)實(shí)例方法,它用于生成一個(gè)介于0(包括0)和指定值(不包括該值)之間的隨機(jī)整數(shù)。

我們之前使用 nextInt(int bound) 方法生成 0-9 之間的隨機(jī)數(shù):

Random random = new Random();
int randomNum = random.nextInt(10);
System.out.println(randomNum);

代碼中使用 Random 類的默認(rèn)構(gòu)造函數(shù)創(chuàng)建一個(gè)隨機(jī)數(shù)生成器對象,然后調(diào)用 nextInt(int bound) 方法生成介于 0(包括 0)和 10(不包括 10)之間的隨機(jī)整數(shù)(多次提及且加粗),最后將結(jié)果存儲(chǔ)到 randomNum 變量中并打印到控制臺(tái)上。

這個(gè)方法的實(shí)現(xiàn)原理是根據(jù)隨機(jī)數(shù)生成器的內(nèi)部狀態(tài)生成隨機(jī)數(shù)。如果指定的 bound 參數(shù)是正數(shù),則生成的隨機(jī)數(shù)即為 0 到 bound 之間的某個(gè)整數(shù)。如果 bound 是負(fù)數(shù)或者 0,則會(huì)拋出 IllegalArgumentException 異常。需要注意的是,生成的隨機(jī)數(shù)是偽隨機(jī)數(shù),其實(shí)際上是一個(gè)確定性的函數(shù),但是它的表現(xiàn)看上去是隨機(jī)的。

對于 Random.nextInt(int bound) 方法,需要特別注意 bound 參數(shù)的取值范圍。如果生成的隨機(jī)數(shù)不是 0 到 bound 之間,那么就可能會(huì)對一些應(yīng)用產(chǎn)生負(fù)面影響,比如在密碼學(xué)應(yīng)用中可能會(huì)導(dǎo)致漏洞。因此,在使用該方法時(shí),需要仔細(xì)檢查 bound 參數(shù)的取值范圍,并對其進(jìn)行適當(dāng)?shù)南拗啤?/p>

那么除了 nextInt() 方法,還有 nextLong()nextBoolean()、nextFloat()、nextDouble() 等。

三、使用場景

Java 隨機(jī)數(shù)生成器可以在很多場景下使用,比如在游戲開發(fā)中,可以隨機(jī)生成怪物、地圖、道具等;如果涉及密碼,可以在加密過程中需要生成隨機(jī)數(shù),如在生成密鑰的時(shí)候生成長度隨機(jī)的鹽值;也可以進(jìn)行測試和演練:可以使用隨機(jī)數(shù)生成器來生產(chǎn)測試數(shù)據(jù)、觀測數(shù)據(jù)等等;

總之,隨機(jī)數(shù)的使用非常廣泛,任何需要模擬隨機(jī)的場景都可以使用 Java 提供的隨機(jī)數(shù)生成器生成隨機(jī)數(shù)。

我們大都有選擇困難癥,比如不知道午飯吃什么?很頭疼!那就讓上天來決定吧!我們使用 Java 隨機(jī)數(shù)來隨意抽取或是決定午飯。

import java.util.Random;
public class RandomLunch {
    public static void main(String[] args) {
        String[] foods = {"漢堡", "炸雞", "披薩", "烤肉", "牛肉面", "米線", "酸菜魚", "煲仔飯", "火鍋", "小籠包"}; //可以選擇的午餐品種
        Random random = new Random();
        int index = random.nextInt(foods.length); // 生成0到可選菜品數(shù)量之間的一個(gè)隨機(jī)整數(shù)
        String lunch = foods[index]; // 根據(jù)隨機(jī)數(shù)選定菜品
        System.out.println("午飯吃" + lunch);
    }
}

上面的代碼中,首先定義了一個(gè)數(shù)組中,存儲(chǔ)了可以選擇的午餐品種。然后使用 java.util.Random 類創(chuàng)建一個(gè)隨機(jī)數(shù)生成器對象,使用 nextInt(int bound) 方法生成一個(gè)介于 0 和可選菜品數(shù)量之間的隨機(jī)數(shù)。最后,使用這個(gè)隨機(jī)數(shù)從菜品數(shù)組中選擇一個(gè)菜品,將其存儲(chǔ)到字符串變量 lunch 中,并輸出午餐的選擇結(jié)果。

在實(shí)際開發(fā)中,可以將類似的代碼集成到提供菜品選擇功能的系統(tǒng)中,方便辦公室的小伙伴們快速?zèng)Q定午餐。

四、官方提示

java.util.Random 的實(shí)例是線程安全的。但是,跨線程并發(fā)使用同一個(gè) java.util.Random 實(shí)例可能會(huì)遇到爭用,從而導(dǎo)致性能下降。考慮在多線程設(shè)計(jì)中使用 java.util.concurrent.ThreadLocalRandom。

java.util.Random 的實(shí)例不是加密安全的。請考慮使用 java.security.SecureRandom 來獲得加密安全的偽隨機(jī)數(shù)生成器,以供對安全性敏感的應(yīng)用程序使用。

總結(jié)

Java 隨機(jī)數(shù)的使用場景還是很多的,所以我們要對其進(jìn)行掌握,本文對 Java 生成隨機(jī)數(shù)的類 Random 進(jìn)行了簡單介紹,如果想深入了解,要查看其源碼,去實(shí)操,去探究。

到此這篇關(guān)于Java如何生成隨機(jī)數(shù)不了解下嗎的文章就介紹到這了,更多相關(guān)Java隨機(jī)數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java快速解析路徑中的參數(shù)(&與=拼接的參數(shù))

    java快速解析路徑中的參數(shù)(&與=拼接的參數(shù))

    這篇文章主要介紹了java快速解析路徑中的參數(shù)(&與=拼接的參數(shù)),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-02-02
  • Java中IO流 RandomAccessFile類實(shí)例詳解

    Java中IO流 RandomAccessFile類實(shí)例詳解

    這篇文章主要介紹了Java中IO流 RandomAccessFile類實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 通過Java?Reflection實(shí)現(xiàn)編譯時(shí)注解正確處理方法

    通過Java?Reflection實(shí)現(xiàn)編譯時(shí)注解正確處理方法

    Java注解是一種標(biāo)記在JDK5及以后的版本中引入,用于Java語言中向程序添加元數(shù)據(jù)的方法,這篇文章主要介紹了通過Java?Reflection實(shí)現(xiàn)編譯時(shí)注解處理方法,需要的朋友可以參考下
    2023-06-06
  • MyBatis插入Insert、InsertSelective的區(qū)別及使用心得

    MyBatis插入Insert、InsertSelective的區(qū)別及使用心得

    這篇文章主要介紹了MyBatis插入Insert、InsertSelective的區(qū)別及使用心得,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java Flink窗口觸發(fā)器Trigger的用法詳解

    Java Flink窗口觸發(fā)器Trigger的用法詳解

    Trigger(窗口觸發(fā)器)決定了窗口(由 WindowAssigner 產(chǎn)生)什么時(shí)候調(diào)用窗口處理函數(shù)??梢愿鶕?jù)指定的時(shí)間或數(shù)據(jù)元素條件來決定什么時(shí)候觸發(fā)。本文將詳細(xì)講講其用法,需要的可以參考一下
    2022-07-07
  • 基于Springboot使用logback的注意事項(xiàng)

    基于Springboot使用logback的注意事項(xiàng)

    這篇文章主要介紹了Springboot使用logback的注意事項(xiàng),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 完全解析Java編程中finally語句的執(zhí)行原理

    完全解析Java編程中finally語句的執(zhí)行原理

    這篇文章主要深度介紹了Java編程中finally語句的執(zhí)行原理,細(xì)致講解了finally在異常處理中的流程控制作用,需要的朋友可以參考下
    2015-11-11
  • Netty分布式FastThreadLocal的set方法實(shí)現(xiàn)邏輯剖析

    Netty分布式FastThreadLocal的set方法實(shí)現(xiàn)邏輯剖析

    這篇文章主要為大家介紹了Netty分布式FastThreadLocal的set方法實(shí)現(xiàn)邏輯剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • SpringCloud GateWay動(dòng)態(tài)路由用法

    SpringCloud GateWay動(dòng)態(tài)路由用法

    網(wǎng)關(guān)作為所有項(xiàng)目的入口,不希望重啟,因此動(dòng)態(tài)路由是必須的,動(dòng)態(tài)路由主要通過RouteDefinitionRepository接口實(shí)現(xiàn),其默認(rèn)的實(shí)現(xiàn)是InMemoryRouteDefinitionRepository,即在內(nèi)存中存儲(chǔ)路由配置,可基于這個(gè)map對象操作,動(dòng)態(tài)路由的實(shí)現(xiàn)方案有兩種
    2024-10-10
  • 簡單了解Java多態(tài)向上轉(zhuǎn)型相關(guān)原理

    簡單了解Java多態(tài)向上轉(zhuǎn)型相關(guān)原理

    這篇文章主要介紹了簡單了解Java多態(tài)向上轉(zhuǎn)型相關(guān)原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12

最新評論