Random類
1什麼是Random類
此類的例項用於生成偽隨機數。
例如,以下程式碼使使用者能夠得到一個隨機數:
Random r = new Random(); int i = r.nextInt();
2 Random 使用步驟
檢視類
- java.util.Random :該類需要 import匯入使後使用。
檢視構造方法
- public Random() :建立一個新的隨機數生成器。
檢視成員方法
- public int nextInt(int n) :返回一個偽隨機數,範圍在0 (包括)和 指定值n (不包括)之間的int 值。
使用Random類,完成生成3個10以內的隨機整數的操作,程式碼如下:
//1. 導包 import java.util.Random; public class Demo01_Random { public static void main(String[] args) { //2. 建立鍵盤錄入資料的物件 Random r = new Random(); for(int i = 0; i < 3; i++){ //3. 隨機生成一個數據 int number = r.nextInt(10); //4. 輸出資料 System.out.println("number:"+ number); } } }
備註:建立一個 Random 物件,每次呼叫 nextInt() 方法,都會生成一個隨機數。
3練習
獲取隨機數
獲取1-n之間的隨機數,包含n,程式碼如下:
// 導包 import java.util.Random; public class Test01Random { public static void main(String[] args) { int n = 50; // 建立物件 Random r = new Random(); // 獲取隨機數 int number = r.nextInt(n) + 1; // 輸出隨機數 System.out.println("number:" + number); } }
猜數字小遊戲
遊戲開始時,會隨機生成一個1-100之間的整數 number 。玩家猜測一個數字 guessNumber ,會與 number 作比較,系統提示大了或者小了,直到玩家猜中,遊戲結束。
小貼士:先執行程式程式碼,理解此題需求,經過分析後,再編寫程式碼
// 導包 import java.util.Random; public class Test02Random { public static void main(String[] args) { // 系統產生一個隨機數1‐100之間的。 Random r = new Random(); int number = r.nextInt(100) + 1; while(true){ // 鍵盤錄入我們要猜的資料 Scanner sc = new Scanner(System.in); System.out.println("請輸入你要猜的數字(1‐100):"); int guessNumber = sc.nextInt(); // 比較這兩個資料(用if語句) if (guessNumber > number) { System.out.println("你猜的資料" + guessNumber + "大了"); } else if (guessNumber < number) { System.out.println("你猜的資料" + guessNumber + "小了"); } else { System.out.println("恭喜你,猜中了"); break; } } } }
4程式碼
import java.util.Random; /* Random類用來生成隨機數字。使用起來也是三個步驟: 1. 導包 import java.util.Random; 2. 建立 Random r = new Random(); // 小括號當中留空即可 3. 使用 獲取一個隨機的int數字(範圍是int所有範圍,有正負兩種):int num = r.nextInt() 獲取一個隨機的int數字(引數代表了範圍,左閉右開區間):int num = r.nextInt(3) 實際上代表的含義是:[0,3),也就是0~2 */ public class Demo01Random { public static void main(String[] args) { Random r = new Random(); int num = r.nextInt(); System.out.println("隨機數是:" + num); } }
import java.util.Random; public class Demo02Random { public static void main(String[] args) { Random r = new Random(); for (int i = 0; i < 100; i++) { int num = r.nextInt(10); // 範圍實際上是0~9 System.out.println(num); } } }
import java.util.Random; /* 題目要求: 根據int變數n的值,來獲取隨機數字,範圍是[1,n],可以取到1也可以取到n。 思路: 1. 定義一個int變數n,隨意賦值 2. 要使用Random:三個步驟,導包、建立、使用 3. 如果寫10,那麼就是0~9,然而想要的是1~10,可以發現:整體+1即可。 4. 列印隨機數字 */ public class Demo03Random { public static void main(String[] args) { int n = 5; Random r = new Random(); for (int i = 0; i < 100; i++) { // 本來範圍是[0,n),整體+1之後變成了[1,n+1),也就是[1,n] int result = r.nextInt(n) + 1; System.out.println(result); } } }
import java.util.Random; import java.util.Scanner; /* 題目: 用程式碼模擬猜數字的小遊戲。 思路: 1. 首先需要產生一個隨機數字,並且一旦產生不再變化。用Random的nextInt方法 2. 需要鍵盤輸入,所以用到了Scanner 3. 獲取鍵盤輸入的數字,用Scanner當中的nextInt方法 4. 已經得到了兩個數字,判斷(if)一下: 如果太大了,提示太大,並且重試; 如果太小了,提示太小,並且重試; 如果猜中了,遊戲結束。 5. 重試就是再來一次,迴圈次數不確定,用while(true)。 */ public class Demo04RandomGame { public static void main(String[] args) { Random r = new Random(); int randomNum = r.nextInt(100) + 1; // [1,100] Scanner sc = new Scanner(System.in); while (true) { System.out.println("請輸入你猜測的數字:"); int guessNum = sc.nextInt(); // 鍵盤輸入猜測的數字 if (guessNum > randomNum) { System.out.println("太大了,請重試。"); } else if (guessNum < randomNum) { System.out.println("太小了,請重試。"); } else { System.out.println("恭喜你,猜中啦!"); break; // 如果猜中,不再重試 } } System.out.println("遊戲結束。"); } }