package JavaBasic1;
import java.util.Random;
public class randomPrize {
public static void main(String[] args) {
/* 需求:
一个大V直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。
请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。
打印效果如下:(随机顺序,不一定是下面的顺序)
888元的奖金被抽出
588元的奖金被抽出
10000元的奖金被抽出
1000元的奖金被抽出
2元的奖金被抽出*/
// 抽奖池数组
int[] arr = {2,588,888,1000,10000};
// 新数组,用于比对重复的奖项
int[] arrNew = new int[arr.length];
Random r = new Random();
for (int i = 0; i < arr.length;) {
int n = r.nextInt(arr.length);
boolean flag = comparePrize(arrNew,arr[n]);
if(!flag){
arrNew[i] = arr[n];
System.out.println(arrNew[i] + "元被抽出");
i++;
}
}
}
// 判断抽出来的数字是否与已经抽完的数字(放数组里了)一样,避免重复
//有一样的:true
//没有一样的:false
public static boolean comparePrize(int[]arrNew,int prize){
boolean flag = false;
for (int i = 0; i < arrNew.length; i++) {
if( prize == arrNew[i]){
return true;
}
}
return false;
}
}
另一种更简单的方法
package JavaBasic1;
import java.util.Random;
public class randomPrize2 {
/* 需求:
一个大V直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。
请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。
打印效果如下:(随机顺序,不一定是下面的顺序)
888元的奖金被抽出
588元的奖金被抽出
10000元的奖金被抽出
1000元的奖金被抽出
2元的奖金被抽出*/
public static void main(String[] args) {
int[] arr = {2, 588, 888, 1000, 10000};
// 打乱奖池
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
int randomIndex = r.nextInt(arr.length);
int temp = arr[i];
arr[i] = arr[randomIndex];
arr[randomIndex] = temp;
}
//遍历奖池
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i] + "元的奖金被抽出");
}
}
}
908

被折叠的 条评论
为什么被折叠?



