最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java兩種常用的隨機(jī)數(shù)生成方式(小白總結(jié))

 更新時間:2020年10月13日 09:11:03   作者:倏逝波  
這篇文章主要介紹了Java兩種常用的隨機(jī)數(shù)生成方式(小白總結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

人機(jī)交互過程中,當(dāng)我們需要機(jī)器給我們反饋不確定的數(shù)字結(jié)果時,就會需要用到隨機(jī)數(shù)了,那么,在Java中,我們應(yīng)當(dāng)如何來生成并使用隨機(jī)數(shù)呢?

一、通過Random類來實現(xiàn)

Random類是JDK的java.util包中的一個工具類,該類可用于在指定范圍內(nèi)產(chǎn)生隨機(jī)數(shù)字??疾煲幌翿andom類的兩種構(gòu)造方法:無參構(gòu)造和有參構(gòu)造

Random(); 無參構(gòu)造方法創(chuàng)建一個偽隨機(jī)數(shù)生成器。Random(long seed);有參構(gòu)造方法使用一個long型的種子創(chuàng)建偽隨機(jī)數(shù)生成器。
下面分別使用兩種方式創(chuàng)建Random對象來獲取10個0到100的隨機(jī)數(shù)

無參構(gòu)造方式

public class demo1 {
  public static void main(String[] args) {
    Random random = new Random();
    for (int i = 0; i < 10; i++) {
      System.out.println(random.nextInt(100));
    }
  }

運(yùn)行結(jié)果:


這里總結(jié)一個應(yīng)用random.nextInt()的式子:random.nextInt(n)+m,返回的是m到m+n-1之間的隨機(jī)數(shù)。比如random.nextInt(9)+1,得到就是1到10之間的某數(shù),如果沒有n和m,那么就是生成一個隨機(jī)的int類型的值。當(dāng)然除了int類型,也可以生成其他數(shù)字型的基本數(shù)據(jù)類型的隨機(jī)數(shù),比如double、float、byte等等。

  • nextDouble()方法返回的是0.0到1.0之間的一個double類型的值
  • nextFloat()方法返回的是0.0到1.0之間的一個float類型的值

有參構(gòu)造方式

public class demo1 {
  public static void main(String[] args) {
    Random random = new Random();
    for (int i = 0; i < 10; i++) {
      System.out.println(random.nextInt(100));
    }
    Random random1 = new Random(100);
    System.out.println("---------");
    for(int i = 0 ;i<10;i++){
      System.out.println(random1.nextInt(100));
    }
  }

這里為了方便跟無參構(gòu)造方法創(chuàng)建的隨機(jī)數(shù)生成器作比較,創(chuàng)建了兩個Random對象。

運(yùn)行結(jié)果:

在這里插入圖片描述

再執(zhí)行一次代碼的結(jié)果:

在這里插入圖片描述

怎么樣?是不是發(fā)現(xiàn)下面的有參構(gòu)造生成的隨機(jī)數(shù)每次運(yùn)行結(jié)果都是一樣的,而無參構(gòu)造方法的random對象每次都能得到不同的隨機(jī)數(shù)。

這里的原因是:無參構(gòu)造方法在創(chuàng)建Random對象時沒有傳入種子參數(shù),程序會自動以當(dāng)前時間為時間戳,于是每一次的運(yùn)行結(jié)果都是不同的。而有參構(gòu)造方法創(chuàng)建Random對象時傳入了種子參數(shù),兩次運(yùn)行時種子相同,實際上不管運(yùn)行多少次,結(jié)果都是一樣的。

二、使用Math類的random方法

Java中的Math類也提供了一個生成隨機(jī)數(shù)的random方法。
首先需要明確,Math.random()是隨機(jī)生成一個0.0到1.0之間的double類型的隨機(jī)數(shù),這里包含0而不包含1。

常見的用法:

public class demo1 {
  public static void main(String[] args) {
    for (int i = 0; i < 3; i++) {
      System.out.println((int) (Math.random() * 10));
    }
  }

Math.random()生成0到1之間的double數(shù),乘以10就變成了0到10之間的double數(shù),再轉(zhuǎn)成int型,這是我平時接觸比較多的用法(通常我們使用隨機(jī)數(shù)也是int類型的居多)。運(yùn)行結(jié)果如下(3個0到10之間的整數(shù)):

在這里插入圖片描述

根據(jù)需要可以靈活使用random()方法:

  • (int)(Math.random()*n)生成大于等于0小于n的隨機(jī)數(shù)。
  • (int)(Math.randon()*n)+m生成大于等于m小于m+n的之間的隨機(jī)數(shù)。
  • (int)(Math.random()*(n-m)+m)生成從m到n范圍內(nèi)的數(shù),包含m不包含n。

另外,我們還可以用這種方式生成字符:

隨機(jī)生成a~z之間的字符
(char)(‘a(chǎn)'+Math.random()*(‘z'-‘a(chǎn)'+1));

隨機(jī)生成cha1~cha2的字符
(char)(cha1+Math.random()*(cha2-cha1+1));

小結(jié)

以上就是近期自己總結(jié)的兩種Java中生成隨機(jī)數(shù)的方法,實際上打開Math類中的random方法的源碼我們可以發(fā)現(xiàn),這個方法就是直接調(diào)用Random類中的nextDouble方法來實現(xiàn)的。至于實際使用看個人愛好吧,比較推薦直接使用Math類的random方法,要記住的是,以上兩種方法生成的隨機(jī)數(shù)都是會重復(fù)的,如果有不能重復(fù)的需求,則需要添加其他操作了。

到此這篇關(guān)于Java兩種常用的隨機(jī)數(shù)生成方式(小白總結(jié))的文章就介紹到這了,更多相關(guān)Java 隨機(jī)數(shù)生成內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java對象的內(nèi)存布局詳細(xì)介紹

    Java對象的內(nèi)存布局詳細(xì)介紹

    這篇文章主要介紹了Java對象的內(nèi)存布局,我們知道在Java中基本數(shù)據(jù)類型的大小,例如int類型占4個字節(jié)、long類型占8個字節(jié),那么Integer對象和Long對象會占用多少內(nèi)存呢?本文介紹一下Java對象在堆中的內(nèi)存結(jié)構(gòu)以及對象大小的計算
    2023-02-02
  • Idea配置超詳細(xì)圖文教程(2020.2版本)

    Idea配置超詳細(xì)圖文教程(2020.2版本)

    這篇文章主要介紹了Idea配置超詳細(xì)圖文教程(2020.2版本),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Java對Excel表格的上傳和下載處理方法

    Java對Excel表格的上傳和下載處理方法

    這篇文章主要介紹了Java對Excel表格的上傳和下載處理方法,需要的朋友可以參考下
    2017-08-08
  • java如何對map進(jìn)行排序詳解(map集合的使用)

    java如何對map進(jìn)行排序詳解(map集合的使用)

    這篇文章主要介紹了java如何對map進(jìn)行排序,java map集合的使用詳解,大家可以參考使用
    2013-12-12
  • SpringBoot指定激活配置文件的方法

    SpringBoot指定激活配置文件的方法

    Spring Boot 對多環(huán)境整合已經(jīng)有了很好的支持,能夠在運(yùn)行間、打包時自由切換環(huán)境,這篇文章主要介紹了SpringBoot指定激活配置文件,需要的朋友可以參考下
    2023-11-11
  • Java實現(xiàn)一個簡易聊天室流程

    Java實現(xiàn)一個簡易聊天室流程

    這篇文章主要介紹了我的java課程設(shè)計一個多人聊天室(socket+多線程)本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • 深入了解java Lombok的使用方法

    深入了解java Lombok的使用方法

    這篇文章主要介紹了深入了解java Lombok的使用,Lombok是一個通過注解以達(dá)到減少代碼的Java庫,如通過注解的方式減少get,set方法,構(gòu)造方法等,需要的朋友可以參考下
    2019-06-06
  • 詳解Java編程中面向字符的輸出流

    詳解Java編程中面向字符的輸出流

    這篇文章主要介紹了Java編程中面向字符的輸出流,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10
  • 關(guān)于Javaweb的轉(zhuǎn)發(fā)和重定向詳解

    關(guān)于Javaweb的轉(zhuǎn)發(fā)和重定向詳解

    這篇文章主要介紹了關(guān)于Javaweb的轉(zhuǎn)發(fā)和重定向詳解,請求的轉(zhuǎn)發(fā),是指服務(wù)器收到請求后,從一個服務(wù)器端資源跳轉(zhuǎn)到同一個服務(wù)器端另外一個資源的操作,需要的朋友可以參考下
    2023-05-05
  • Java收集的雪花算法代碼詳解

    Java收集的雪花算法代碼詳解

    這篇文章主要介紹了Java實現(xiàn)雪花算法的詳細(xì)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10

最新評論

永和县| 巴彦淖尔市| 隆尧县| 梅州市| 栖霞市| 峡江县| 务川| 儋州市| 定结县| 常熟市| 修水县| 南投县| 昌吉市| 西宁市| 巴林左旗| 蓬溪县| 建始县| 仪陇县| 井研县| 灵武市| 崇仁县| 南充市| 金塔县| 什邡市| 巩义市| 南开区| 嘉善县| 长海县| 陆河县| 逊克县| 九寨沟县| 堆龙德庆县| 全南县| 金湖县| 汨罗市| 新乐市| 齐河县| 娄底市| 太原市| 六枝特区| 云浮市|