1.Random:產生一個偽隨機數(通過相同的種子,產生的隨機數是相同的);
1 2 3 4 | Random r= new Random(); System.out.println(r.nextBoolean()); System.out.print(r.nextInt( 50 )); //隨機生成0~50的隨機數,不包括50 System.out.println(r.nextInt( 20 )+ 30 ); //隨機生成30~50的隨機數,不包括50 |
2.ThreadLocalRandom:是JDK 7之後提供併發產生隨機數,能夠解決多個執行緒發生的競爭爭奪。ThreadLocalRandom不是直接用new例項化,而是第一次使用其靜態方法current()。
從Math.random()改變到ThreadLocalRandom有如下好處:
我們不再有從多個執行緒訪問同一個隨機數生成器例項的爭奪。
取代以前每個隨機變數例項化一個隨機數生成器例項,我們可以每個執行緒例項化一個。
1 2 3 | ThreadLocalRandom t=ThreadLocalRandom.current(); System.out.println(t.nextInt( 50 )); //隨機生成0~50的隨機數,不包括50 System.out.println(t.nextInt( 30 , 50 )); //隨機生成30~50的隨機數,不包括50 |
3.UUID: UUID含義是通用唯一識別碼 (Universally Unique Identifier),這 是一個軟體建構的標準,也是被開源軟體基金會 (Open Software Foundation, OSF) 的組織在分散式計算環境 (Distributed Computing Environment, DCE) 領域的一部份。UUID 的目的,是讓分散式系統中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定。如此一來,每個人都可以建立不與其它人衝突的 UUID。在這樣的情況下,就不需考慮資料庫建立時的名稱重複問題。目前最廣泛應用的 UUID,即是微軟的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的應用,則有 Linux ext2/ext3 檔案系統、LUKS 加密分割區、GNOME、KDE、Mac OS X 等等。
1 2 | String u=UUID.randomUUID().toString(); System.out.println(u); |
生成5個字元的驗證碼:
1 2 3 4 5 6 7 8 9 10 | String content= "ABCDEFGHIJKLMNOPQRSTUVWHYZ" ; //建立23個大寫字母的字串 content+=content.toLowerCase(); //把大寫字母轉換成小寫字母,相連線 content+= "0123456789" ; //連線0~9的數字。 Random r= new Random(); //建立一個隨機數物件 StringBuilder b= new StringBuilder( 5 ); //建立空間大小為5的StringBuilder物件 for ( int i = 0 ; i < 5 ; i++) { char n=content.charAt(r.nextInt(content.length())); //擷取一個從0到content.length()之間的字元,迴圈輸出5個不同的字元,追加到一起 b.append(n); } System.out.println(b.toString()); //轉成字串輸出5個字元 |