java學習之路--------第五天
今天的內容主要就是隨機數的二種方式和有關隨機數的二個案例
1.Math方法
語法:Math.random();
生成的是0.0~1.0之間的隨機浮點數
備註:前包括後不包括0.0可能會生成,1.0不會生成
2.Random類
語法:Random r = new Random();
常用的方法:
r.nextInt();生成int取值範圍內的任意一個整數
r.nextInt(範圍):生成指定範圍內的整數
例子:生成1~100的隨機整數
r.nextInt(100)+1; 1~101;但是取不到101,所以為1~100
案例:
1、猜數字遊戲(1~100)
先1~100之間的整數,從控制檯輸入你猜的數字和隨機生成的數比較,總分一百分,每猜錯一次扣10分,猜對後剩多少分
以下是主要程式碼:
Scanner s = new Scanner(System.in);
Random r = new Random();
int num = r.nextInt(100)+1;
int score = 100;
while(true) {
System.out.println("請輸入你猜的數:");
int cai = s.nextInt();
if(cai!=num) {
score = score - 10;
if(score==0) {
System.out.println("你真笨,10次都沒有猜中!");
break;
}else {
if(cai>num) {
System.out.println("你猜的數大了");
}else {
System.out.println("你猜的數小了");
}
}
}else {
System.out.println("真棒,你猜對了,"+"共獲得"+score+"分");
break;
2.雙色球
紅球:1~33個號碼中隨機生成6個號碼(不能重複)放入紅球陣列中去,生成完之後用氣泡排序進行排序
藍球:1~16個號碼中隨機獲取一個號碼,通過陣列的擴容新增到陣列中去
以下是關鍵程式碼:
Random r = new Random();
//定義一個空陣列用於存放資料
int[] arr = {};
//定義一個計數器
int num = 0;
//取6個數,迴圈6次
out: for(;;) {
//定義一個開關
boolean flag = false;
//紅球獲取的隨機數
int hong = r.nextInt(33)+1;
//判斷隨機數陣列中是否已經存在
in: for(int i = 0;i<arr.length;i++) {
//判斷陣列中對否已經存在該數,如果存在,則不放入陣列中
if(arr[i] == hong) {
flag = true;
continue out;
}
}
if(!flag) {
num++;
if(num<6) {
arr = Arrays.copyOf(arr, arr.length+1);
arr[arr.length-1] = hong;
}else {
break out;
}
}
}
//使用氣泡排序將陣列排序
for(int i = 0;i<arr.length-1;i++) {
for(int j = 0;j<arr.length-1-i;j++) {
if(arr[j]>arr[j+1]) {
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
//藍球獲取隨機數
int lan = r.nextInt(16)+1;
arr = Arrays.copyOf(arr, arr.length+1);
arr[arr.length-1] = lan;
System.out.println(Arrays.toString(arr));
}