Java詳細(xì)講解Math和Random類中有哪些常用方法
java.lang.Math當(dāng)中提供了一系列的靜態(tài)方法用于科學(xué)計算;其方法的參數(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的隨機(jī)數(shù)(不包括1.0)為:" + Math.random()); } }
Math類的源碼我就不在這做多的展示,因為它底層有體現(xiàn)的話,也非常簡單,而且大多都是采用的底層操作系統(tǒng)上的去實現(xiàn)去了。
Random()方法
Random方法是java當(dāng)中獲得隨機(jī)數(shù)的類,調(diào)用它對應(yīng)的方法,可以獲得我們想要區(qū)間的隨機(jī)數(shù)。
創(chuàng)建隨機(jī)數(shù)的對象:
Random random = new Random();
Random當(dāng)中的方法并不多,我就在這先演示一下:
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當(dāng)中 0.0和 1.0之間的的任意一個 System.out.println("nextDouble()輸出為:"+random.nextDouble()); } }
輸出結(jié)果:
當(dāng)想生成一個數(shù)組的隨機(jī)數(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獲得的隨機(jī)數(shù),并不是真正的隨機(jī)數(shù),也可以說現(xiàn)在普通用戶以及公司是沒有辦法獲得真正的隨機(jī)數(shù),而Random獲得的隨機(jī)數(shù)稱為一種偽隨機(jī)數(shù)。想要獲得真正的隨機(jī)數(shù)只能通過量子計算機(jī)獲得。
所以我們選擇獲得的隨機(jī)數(shù),大多都是通過當(dāng)前時間經(jīng)過一系列復(fù)雜的算法,得到一個隨機(jī)數(shù)。 這種復(fù)雜的算法我們就稱為種子。
所以我們也就可以通過拿到當(dāng)時生成Random對象時的種子,再傳進(jìn)去,就可以復(fù)制出它之前生成的隨機(jī)數(shù)。
現(xiàn)在讓我們先看看創(chuàng)建Random時的源碼:
在Java當(dāng)中,為了安全性,當(dāng)然也會提供給我們對應(yīng)的方法。
我們自己傳入種子,不使用Java提供的方法得到,通過自己寫的生成隨機(jī)數(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ǔ)的一個系列,比起當(dāng)時初學(xué)的時候,現(xiàn)在看問題多了個高度,理解什么也相對輕松一點全面一些。學(xué)習(xí)起來更加偏向閱讀源碼底層來看,多為自己幾個為什么?
到此這篇關(guān)于Java詳細(xì)講解Math和Random類中有哪些常用方法的文章就介紹到這了,更多相關(guān)Java Math和Random內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IntelliJ IDEA代碼提示忽略大小寫的具體設(shè)置步驟
在IDEA開發(fā)過程中,代碼補全功能是提升編碼效率的核心特性之一,默認(rèn)情況下,IDEA的代碼提示會嚴(yán)格匹配大小寫,這對于遵循命名規(guī)范的項目是合理的,然而,在某些場景下,開發(fā)者可能希望代碼提示忽略大小寫,以提升輸入靈活性,所以本文介紹了如何設(shè)置IDEA提示忽略大小寫2025-06-06Spring中bean的生命周期之getSingleton方法
今天給大家?guī)淼氖顷P(guān)于Spring的相關(guān)知識,文章圍繞著Spring中bean的生命周期之getSingleton方法展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06Java日常練習(xí)題,每天進(jìn)步一點點(19)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07SpringBoot啟動多數(shù)據(jù)源找不到合適的驅(qū)動類問題
這篇文章主要介紹了SpringBoot啟動多數(shù)據(jù)源找不到合適的驅(qū)動類問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01SpringBoot整合Keycloak實現(xiàn)單點登錄的示例代碼
本文主要介紹了SpringBoot整合Keycloak實現(xiàn)單點登錄的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03