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

Java兩種常用的隨機數生成方式(小白總結)

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

人機交互過程中,當我們需要機器給我們反饋不確定的數字結果時,就會需要用到隨機數了,那么,在Java中,我們應當如何來生成并使用隨機數呢?

一、通過Random類來實現

Random類是JDK的java.util包中的一個工具類,該類可用于在指定范圍內產生隨機數字。考察一下Random類的兩種構造方法:無參構造和有參構造

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

無參構造方式

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.nextInt()的式子:random.nextInt(n)+m,返回的是m到m+n-1之間的隨機數。比如random.nextInt(9)+1,得到就是1到10之間的某數,如果沒有n和m,那么就是生成一個隨機的int類型的值。當然除了int類型,也可以生成其他數字型的基本數據類型的隨機數,比如double、float、byte等等。

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

有參構造方式

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));
    }
  }

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

運行結果:

在這里插入圖片描述

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

在這里插入圖片描述

怎么樣?是不是發(fā)現下面的有參構造生成的隨機數每次運行結果都是一樣的,而無參構造方法的random對象每次都能得到不同的隨機數。

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

二、使用Math類的random方法

Java中的Math類也提供了一個生成隨機數的random方法。
首先需要明確,Math.random()是隨機生成一個0.0到1.0之間的double類型的隨機數,這里包含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數,乘以10就變成了0到10之間的double數,再轉成int型,這是我平時接觸比較多的用法(通常我們使用隨機數也是int類型的居多)。運行結果如下(3個0到10之間的整數):

在這里插入圖片描述

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

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

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

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

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

小結

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

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

相關文章

  • 這一次搞懂Spring事務是如何傳播的

    這一次搞懂Spring事務是如何傳播的

    這篇文章主要介紹了這一次搞懂Spring事務是如何傳播的,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • SpringBoot中application.properties、application.yaml、application.yml區(qū)別

    SpringBoot中application.properties、application.yaml、applicati

    本文主要介紹了SpringBoot中application.properties、application.yaml、application.yml區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-04-04
  • Java實現的按照順時針或逆時針方向輸出一個數字矩陣功能示例

    Java實現的按照順時針或逆時針方向輸出一個數字矩陣功能示例

    這篇文章主要介紹了Java實現的按照順時針或逆時針方向輸出一個數字矩陣功能,涉及java基于數組遍歷、運算的矩陣操作技巧,需要的朋友可以參考下
    2018-01-01
  • Java自定義線程池的實現示例

    Java自定義線程池的實現示例

    本文主要介紹了Java自定義線程池的實現示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • MyBatis入門程序

    MyBatis入門程序

    MyBatis是支持普通SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架。接下來本文給大家?guī)砹薓yBatis入門程序,感興趣的朋友一起學習吧
    2016-08-08
  • Java 數據庫時間返回前端顯示錯誤(差8個小時)的解決方法

    Java 數據庫時間返回前端顯示錯誤(差8個小時)的解決方法

    本文主要介紹了Java 數據庫時間返回前端顯示錯誤(差8個小時)的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08
  • Java多個版本切換的幾種方法

    Java多個版本切換的幾種方法

    本文主要介紹了Java多個版本切換的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • springboot3生成本地文件url的實現示例

    springboot3生成本地文件url的實現示例

    本文主要介紹了springboot3生成本地文件url的實現示例,從而提供一種高效的文件管理方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • Java中使用Lambda表達式和函數編程示例

    Java中使用Lambda表達式和函數編程示例

    這篇文章介紹了Java中使用Lambda表達式和函數編程示例,該文章會演示多個示列,分別是變量聲明上下文中的lambda、return語句上下文中的lambda、賦值上下文中的lambda、lambda在數組初始值設定項上下文中的用法等等,需要的朋友可以參考一下
    2021-10-10
  • Java語言中Swing組件編程詳解

    Java語言中Swing組件編程詳解

    這篇文章主要為大家介紹了Java語言中Swing組件編程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10

最新評論