java random.nextbytes_Java Random类
首頁?>?基礎教程?>?常用類?>?常用 Random類
Java Random類
Random類中實現的隨機算法是偽隨機,也就是有規則的隨機。在進行隨機時,隨機算法的起源數字稱為種子數(seed),在種子數的基礎上進行一定的變換,從而產生需要的隨機數字。
相同種子數的Random對象,相同次數生成的隨機數字是完全相同的。也就是說,兩個種子數相同的Random對象,第一次生成的隨機數字完全相同,第二次生成的隨機數字也完全相同。這點在生成多個隨機數字時需要特別注意。
構造方法
public Random()
public Random(long seed)
第一個構造方法使用一個和當前系統時間對應的相對時間有關的數字作為種子數,然后使用這個種子數構造Random對象。
第二個構造方法可以通過制定一個種子數進行創建。
方法
boolean nextBoolean() //返回下一個偽隨機數,它是取自此隨機數生成器序列的均勻分布的boolean值。
void nextBytes(byte[] bytes) //生成隨機字節并將其置于用戶提供的 byte 數組中。
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) //返回一個偽隨機數,它是取自此隨機數生成器序列的、在(包括和指定值(不包括)之間均勻分布的int值。
long nextLong() //返回下一個偽隨機數,它是取自此隨機數生成器序列的均勻分布的 long 值。
void setSeed(long seed) //使用單個 long 種子設置此隨機數生成器的種子。
例子
Random使用一個48位的種子,如果兩個Random類的實例是同一個種子創建的額,對它們以同樣的順序調用,將會參數同樣的隨機數
import java.util.Random;
public class Test {
public static void main(String[] args) throws Exception
{
Random r1=new Random(45);
Random r2=new Random(45);
System.out.println(r1.nextFloat()+";"+r2.nextFloat());
System.out.println(r1.nextInt()+";"+r2.nextInt());
System.out.println(r1.nextLong()+";"+r2.nextLong());
System.out.println(r1.nextBoolean()+";"+r2.nextBoolean());
}
}
結果是
0.7269366;0.7269366
-266757034;-266757034
-2397444879181054479;-2397444879181054479
false;false
結果完全一樣。值得指出的是當使用默認的種子構造隨機數時,它們屬于同一個種子
從運行結構來看,如果連個Random對象的種子相同,而且方法的調用順序也相同,則它們會產生同樣的數字序列,也就是說,Random產生的不是真正的隨機數,而是偽隨機數。為了避免兩個Random對象產生同樣的數字序列,我們可以使用當前時間作為種子Random r=new Random(System.currentTimeMillis());
版權聲明:本文為JAVASCHOOL原創文章,未經本站允許不得轉載。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java random.nextbytes_Java Random类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通 提高篇 第6章 平衡树
- 下一篇: flash倒计时_11款免费又好用的PP