Java詳細講解Math和Random類中有哪些常用方法
java.lang.Math當中提供了一系列的靜態(tài)方法用于科學計算;其方法的參數(shù)和返回值的類型一般為double型。
下來我就簡單的介紹一下Math類中常用的方法。
public static int abs(double a) 求絕對值
public static double sqrt(double a) 求平方根
public static double pow(double a, double b) 求a的b次冪
public static double max(double a, double b) 求a和b那個大
public static double min(double a, double b) 求a和b那個小
public static long round(double a) 將a四舍五入返回lang型
public static double floor(double a) 返回小于或等于參數(shù)的最大整數(shù),數(shù)據(jù)類型為double型
public static double ceil(double a) 返回大于或等于參數(shù)的最大整數(shù),數(shù)據(jù)類型為double型
public static double random() 返回一個double值為正號,大于等于0.0 ,小于1.0
代碼演示一下上面的方法:
public class Demo01 {
public static void main(String[] args) {
System.out.println("求-3的絕對值為:" + Math.abs(-3));
System.out.println("求4的平方根為:" + Math.sqrt(4));
System.out.println("求2的3次方冪為:" + Math.pow(2, 3));
System.out.println("求2和3的最大值為:" + Math.max(2, 3));
System.out.println("求2和3的最小值為:" + Math.min(2, 3));
System.out.println("求9.87向下轉(zhuǎn)型的數(shù)為:" + Math.floor(9.87));
System.out.println("求9.12向上轉(zhuǎn)型的數(shù)為:" + Math.ceil(9.12));
System.out.println("求9.55的四舍五入的值為:" + Math.round(9.55));
System.out.println("求一個0.0到1.0的隨機數(shù)(不包括1.0)為:" + Math.random());
}
}
Math類的源碼我就不在這做多的展示,因為它底層有體現(xiàn)的話,也非常簡單,而且大多都是采用的底層操作系統(tǒng)上的去實現(xiàn)去了。
Random()方法
Random方法是java當中獲得隨機數(shù)的類,調(diào)用它對應(yīng)的方法,可以獲得我們想要區(qū)間的隨機數(shù)。
創(chuàng)建隨機數(shù)的對象:
Random random = new Random();
Random當中的方法并不多,我就在這先演示一下:
import java.util.Random;
public class Demo03 {
public static void main(String[] args) {
Random random = new Random();
//返回整型里任意一個
System.out.println("nextInt()輸出為:"+random.nextInt());
//返回大于等于0,小于9的任意一個整型
System.out.println("nextInt(9)輸出為:"+random.nextInt(9));
//返回Boolean型任意一個
System.out.println("nextBoolean()輸出為:"+random.nextBoolean());
//返回Double當中 0.0和 1.0之間的的任意一個
System.out.println("nextDouble()輸出為:"+random.nextDouble());
}
}
輸出結(jié)果:

當想生成一個數(shù)組的隨機數(shù)的時候,也可以直接采取調(diào)用來實現(xiàn):
import java.util.Arrays;
import java.util.Random;
public class Demo04 {
public static void main(String[] args) {
Random random = new Random();
byte[] bytes = new byte[5];
random.nextBytes(bytes);
System.out.println(Arrays.toString(bytes));
}
}

這些方法具體的實現(xiàn),都是通過一個叫種子的東西生成的。
在這科普一個小知識點。
Random獲得的隨機數(shù),并不是真正的隨機數(shù),也可以說現(xiàn)在普通用戶以及公司是沒有辦法獲得真正的隨機數(shù),而Random獲得的隨機數(shù)稱為一種偽隨機數(shù)。想要獲得真正的隨機數(shù)只能通過量子計算機獲得。
所以我們選擇獲得的隨機數(shù),大多都是通過當前時間經(jīng)過一系列復(fù)雜的算法,得到一個隨機數(shù)。 這種復(fù)雜的算法我們就稱為種子。
所以我們也就可以通過拿到當時生成Random對象時的種子,再傳進去,就可以復(fù)制出它之前生成的隨機數(shù)。
現(xiàn)在讓我們先看看創(chuàng)建Random時的源碼:

在Java當中,為了安全性,當然也會提供給我們對應(yīng)的方法。
我們自己傳入種子,不使用Java提供的方法得到,通過自己寫的生成隨機數(shù)。
在這我才給代碼演示一下:
public class Demo02 {
public static void main(String[] args) {
Random random = new Random(5);
System.out.println("第一次調(diào)用:");
for (int i = 0; i < 5; i++) {
System.out.println(random.nextInt());
}
random = new Random(5);
System.out.println("第二次調(diào)用:");
for (int i = 0; i < 5; i++) {
System.out.println(random.nextInt());
}
}
}
這是我重讀javase基礎(chǔ)的一個系列,比起當時初學的時候,現(xiàn)在看問題多了個高度,理解什么也相對輕松一點全面一些。學習起來更加偏向閱讀源碼底層來看,多為自己幾個為什么?
到此這篇關(guān)于Java詳細講解Math和Random類中有哪些常用方法的文章就介紹到這了,更多相關(guān)Java Math和Random內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IntelliJ IDEA代碼提示忽略大小寫的具體設(shè)置步驟
在IDEA開發(fā)過程中,代碼補全功能是提升編碼效率的核心特性之一,默認情況下,IDEA的代碼提示會嚴格匹配大小寫,這對于遵循命名規(guī)范的項目是合理的,然而,在某些場景下,開發(fā)者可能希望代碼提示忽略大小寫,以提升輸入靈活性,所以本文介紹了如何設(shè)置IDEA提示忽略大小寫2025-06-06
Spring中bean的生命周期之getSingleton方法
今天給大家?guī)淼氖顷P(guān)于Spring的相關(guān)知識,文章圍繞著Spring中bean的生命周期之getSingleton方法展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下2021-06-06
SpringBoot啟動多數(shù)據(jù)源找不到合適的驅(qū)動類問題
這篇文章主要介紹了SpringBoot啟動多數(shù)據(jù)源找不到合適的驅(qū)動類問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
SpringBoot整合Keycloak實現(xiàn)單點登錄的示例代碼
本文主要介紹了SpringBoot整合Keycloak實現(xiàn)單點登錄的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03

