首頁  >  文章  >  Java  >  Java中如何產生隨機數

Java中如何產生隨機數

青灯夜游
青灯夜游原創
2018-11-21 15:10:3657969瀏覽

Java中如何產生隨機數?本篇文章就跟大家介紹在Java中產生隨機數的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有幫助。

在Java中提供了三種使用一些內建方法和類別來產生隨機數的方法,如下所示:

1、java.util.Random類別

2 、Math.random方法:可以產生double類型的隨機數。

3、ThreadLocalRandom類別

下面我們就來看看具體Java是如何實作隨機數的產生。

1、java.util.Random類別

Java 實用工具類別庫中的類別:java.util.Random 提供了產生各種類型隨機數的方法。

要使用java.util.Random類別產生隨機數,我們必須先建立此類的實例,然後使用該實例呼叫nextInt(),nextDouble(),nextLong()等方法。

我們可以使用java.util.Random類別隨機產生:整數,浮點數,雙精度數,長整數,布林運算數等類型的隨機數。

我們可以將參數傳遞給方法,以便在要產生的數字範圍上放置上限。例如,nextInt(6)將產生0到5(包括0和5)範圍內的數字。

// 随机数生成
// 使用java.util.Random; 
import java.util.Random; 

public class generateRandom{ 

	public static void main(String args[]) 
	{ 
		// 创建随机类的实例
		Random rand = new Random(); 

		// 在0到999范围内生成随机整数
		int rand_int1 = rand.nextInt(1000); 
		int rand_int2 = rand.nextInt(1000); 

		// 输出随机整数
		System.out.println("随机整数: "+rand_int1); 
		System.out.println("随机整数: "+rand_int2); 

		// 生成随机双精度数
		double rand_dub1 = rand.nextDouble(); 
		double rand_dub2 = rand.nextDouble(); 

		// 输出随机双精度数
		System.out.println("随机双精度数: "+rand_dub1); 
		System.out.println("随机双精度数: "+rand_dub2); 
	} 
}

運行輸出:

Java中如何產生隨機數

#2、Math.random方法

Math類別包含用於執行各種數值運算的各種方法,例如計算取冪,對數等。這其中的一個方法:random(),可以傳回帶有正號的double數,值大於或等於0.0且小於1.0 ,即取值範圍是[0.0,1.0)的左閉右開區間。

random()方法傳回的值是偽隨機選擇的,在[0.0,1.0)的範圍內(近似)均勻分佈。

註:它只能產生double類型的隨機數。

下面我們就透過java程式碼介紹如何使用此方法產生隨機數字:

// Math.random() 生成随机数
import java.util.*; 

public class generateRandom 
{ 
	public static void main(String args[]) 
	{ 
		// 随机双精度数的生成
		System.out.println("随机双精度数: " + Math.random()); 
		System.out.println("随机双精度数: " + Math.random()); 
	} 
}

運行結果:

Java中如何產生隨機數

3、java.util.concurrent.ThreadLocalRandom類別

ThreadLocalRandom類別是在java 1.7中引入的,提供並發產生隨機數,能夠解決多個執行緒發生的競爭爭奪。可以產生整數,雙精度,布林等類型的隨機數。

ThreadLocalRandom的主要實作細節:

1)、使用一個普通的長而不是使用Random中的AtomicLong作為seed

2)、不能自己建立ThreadLocalRandom實例,因為它的建構子是私有的,我們可以使用它的靜態方法ThreadLocalRandom.current()

3)、它是CPU快取感知式的,使用8個long虛擬域來填充64位元L1高速快取行

我們就透過簡單的java程式碼介紹如何使用這個類別產生隨機數字:

// 随机数的产生
// 使用java.util.concurrent.ThreadLocalRandom类
import java.util.concurrent.ThreadLocalRandom; 

public class generateRandom 
{ 
	public static void main(String args[]) 
	{ 
		// 在0到999范围内生成随机整数
		int rand_int1 = ThreadLocalRandom.current().nextInt(); 
		int rand_int2 = ThreadLocalRandom.current().nextInt(); 

		// 输出随机整数
		System.out.println("Random Integers: " + rand_int1); 
		System.out.println("Random Integers: " + rand_int2); 

		// 生成随机双精度数
		double rand_dub1 = ThreadLocalRandom.current().nextDouble(); 
		double rand_dub2 = ThreadLocalRandom.current().nextDouble(); 

		// 输出随机双精度数
		System.out.println("Random Doubles: " + rand_dub1); 
		System.out.println("Random Doubles: " + rand_dub2); 

		// 生成随机布尔值
		boolean rand_bool1 = ThreadLocalRandom.current().nextBoolean(); 
		boolean rand_bool2 = ThreadLocalRandom.current().nextBoolean(); 

		// 输出随机布尔值
		System.out.println("Random Booleans: " + rand_bool1); 
		System.out.println("Random Booleans: " + rand_bool2); 
	} 
}

運行輸出:

Java中如何產生隨機數

##總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多相關影片教學,請造訪:Java教學

以上是Java中如何產生隨機數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn