1、通過System.currentTimeMillis()來獲取一個當前時間毫秒數的long型數字。
long ctms = System.currentTimeMillis();
System.out.println(ctms);
System.out.println(date.getTime());【當前時間和1970年格林威治時間之間的間隔數】
double r1 =Math.random();
System.out.println(r1);
Random類中實現的隨機算法是僞隨機,也就是有規則的隨機。在進行隨機時,隨機算法的起源數字稱爲種子數(seed),在種子數的基礎上進行一定的變換,從而產生需要的隨機數字。
相同種子數的Random對象,相同次數生成的隨機數字是完全相同的。也就是說,兩個種子數相同的Random對象,第一次生成的隨機數字完全相同,第二次生成的隨機數字也完全相同。這點在生成多個隨機數字時需要特別注意。
Random類包含兩個構造方法,下面依次進行介紹:
a、public Random()
該構造方法使用一個和當前系統時間對應的相對時間有關的數字作爲種子數,然後使用這個種子數構造Random對象。
b、public Random(long seed)
該構造方法可以通過制定一個種子數進行創建。
示例代碼:
Random r = new Random();
Random r1 = new Random(10);
再次強調:種子數只是隨機算法的起源數字,和生成的隨機數字的區間無關。
a、public boolean nextBoolean()
該方法的作用是生成一個隨機的boolean值,生成true和false的值機率相等,也就是都是50%的機率。
b、public double nextDouble()
該方法的作用是生成一個隨機的double值,數值介於[0,1.0)之間。
c、public int nextInt()
該方法的作用是生成一個隨機的int值,該值介於int的區間,也就是-231到231-1之間。
如果需要生成指定區間的int值,則需要進行一定的數學變換,具體可以參看下面的使用示例中的代碼。
d、public int nextInt(int n)
該方法的作用是生成一個隨機的int值,該值介於[0,n)的區間,也就是0到n之間的隨機int值,包含0而不包含n。
如果想生成指定區間的int值,也需要進行一定的數學變換,具體可以參看下面的使用示例中的代碼。
e、public void setSeed(long seed)
該方法的作用是重新設置Random對象中的種子數。設置完種子數以後的Random對象和相同種子數使用new關鍵字創建出的Random對象相同。
int result1 = r2.nextInt(100);
System.out.println(result1);
1、隨機數很常用,在Java有三種產生方式,以Random隨機數的使用最爲複雜。
2、Random類對象有是否帶種子之分,帶種子的只要種子相同,多次運行,生成隨機數的結果總是那樣。
3、帶種子隨機數的帶種子的對象創建方式有兩種,效果一樣。但是帶種子的隨機數用處似乎不大。
4、Random的功能涵蓋了Math.random()的功能。
5、可以通過隨機數去做實現隨機字符串等複雜的隨機數據。
6、不要研究不重複的隨機數,意義不大。
7、random方法的調用比較簡單,所以很多程序員都習慣使用Math類的random方法來生成隨機數字。