題目要求1:產生六個相鄰兩數不重複的亂數,亂數值介於1~100之間,並印出來。
想法:相鄰兩數不重複,可以用if作判斷;作六次可以用while來控制。
public class RandomTest {
public static void main(String[] args) {
byte temp = 0;
byte count = 0;
RandomTest ob1 = new RandomTest();
temp = ob1.getRandom();
count++;
System.out.println("第" + count + "次的亂數值為" + temp);
label:
while (count < 6) {
byte _temp = ob1.getRandom();
if (_temp != temp) {
temp = _temp;
count++;
System.out.println("第" + count + "次的亂數值為" + temp);
continue label; //再回去取下一個亂數值。
} else {
continue label; //甚麼也不做,再取一次。
}
}
}
//取1-100之間的亂數方法
public byte getRandom() {
return ((byte) (Math.random() * 8 + 1));
}
}
題目要求2:
改進要求1,取六個亂數,但這六個亂數絕對不能重複。
想法:
先做一個100個空間的陣列,依序放1-100
再依序由此陣列提取亂數6次。
提取陣列後便將該欄位清空為零,
從此陣列提取數值時,為零的就不提取,以保證不會重複。
public class ArrayTest1 {
public static void main(String[] args) {
int[] data = new int[100]; //作一個100個空間的整數陣列
for (int i = 0; i < data.length; i++ ) {//依序放1-100
data[i] = i + 1;
}
int count = 0; //用計數器取六次
while (count != 6) {
//作一個0~99的亂數當成陣列索引值。
int random = (int) ( Math.random()*100 );
//取出後就把該值設為0,遇到0就不取值。
if (data[random] != 0) {
System.out.println(data[random]);
data[random] = 0;
count++;
}
}
}
}
沒有留言:
張貼留言