Java隨機數總結(第一部分)
隨機數在實際中使用很廣泛,比如要隨即生成一個固定長度的字符串、數字。或者隨即生成一個不定長度的數字、或者進行一個模擬的隨機選擇等等。Java提供了最基本的工具,可以幫助開發者來實現這一切。
一、Java隨機數的產生方式
在Java中,隨機數的概念從廣義上將,有三種。
1、通過System.currentTimeMillis()來獲取一個當前時間毫秒數的long型數字。
2、通過Math.random()返回一個0到1之間的double值。
3、通過Random類來產生一個隨機數,這個是專業的Random工具類,功能強大。
二、Random類API說明
1、Java API說明
Random類的實例用于生成偽隨機數流。此類使用 48 位的種子,使用線性同余公式對其進行修改(請參閱 Donald Knuth 的《The Art of Computer Programming, Volume 2》,第 3.2.1 節)。
如果用相同的種子創建兩個 Random 實例,則對每個實例進行相同的方法調用序列,它們將生成并返回相同的數字序列。為了保證屬性的實現,為類 Random 指定了特定的算法。
很多應用程序會發現 Math 類中的 random 方法更易于使用。
2、方法摘要
Random()
創建一個新的隨機數生成器。
Random(long seed)
使用單個 long 種子創建一個新隨機數生成器: public Random(long seed) { setSeed(seed); } next 方法使用它來保存隨機數生成器的狀態。
protected int next(int bits)
生成下一個偽隨機數。
boolean nextBoolean()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、均勻分布的 boolean 值。
void nextBytes(byte[] bytes)
生成隨機字節并將其置于用戶提供的字節數組中。
double nextDouble()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、在 0.0 和 1.0之間均勻分布的 double 值。
float nextFloat()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、在 0.0 和 1.0 之間均勻分布的 float 值。
double nextGaussian()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、呈高斯(“正常地”)分布的 double 值,其平均值是 0.0,標準偏差是 1.0。
int nextInt()
返回下一個偽隨機數,它是此隨機數生成器的序列中均勻分布的 int 值。
int nextInt(int n)
返回一個偽隨機數,它是從此隨機數生成器的序列中取出的、在 0(包括)和指定值(不包括)之間均勻分布的 int值。
long nextLong()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、均勻分布的 long 值。
void setSeed(long seed)
使用單個 long 種子設置此隨機數生成器的種子。
三、Random類使用說明
1、帶種子與不帶種子的區別Random類使用的根本是策略分帶種子和不帶種子的Random的實例。
通俗說,兩者的區別是:帶種子的,每次運行生成的結果都是一樣的。不帶種子的,每次運行生成的都是隨機的,沒有規律可言。
2、創建不帶種子的Random對象
Random random = new Random();
3、創建不帶種子的Random對象有兩種方法:
1) Random random = new Random(555L);
2) Random random = new Random();random.setSeed(555L);
【編輯推薦】