一直播间抽奖,奖品是现金红包,分别有{52,688,888,999,9999}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。(随机顺序)
方法一:
public static void main(String[] args) {
//1.定义数组表示奖池
int[] arr={52,688,888,999,9999};
//2.定义一个新的数组用于存储抽奖的结果
int[] newArr=new int[arr.length];
//3.抽奖
Random r=new Random();
//因为有5个奖项,所以这里要循环5次
for (int i = 0; i < 5;) {
//获取随机索引
int randomIndex=r.nextInt(arr.length);
//获取奖项
int prize=arr[randomIndex];
boolean flag=contains(newArr,prize);
if (!flag){
//把当前抽取到的奖项添加到newArr中
newArr[i]=prize;
//添加完毕之后移动索引
i++;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(newArr[i]);
}
}
//判断prize是否在数组中存在
//存在:true
//不存在:false
public static boolean contains(int[] arr,int prize){
for (int i = 0; i < arr.length; i++) {
if (arr[i]==prize){
return true;
}
}
return false;
}
}
方法二:
public static void main(String[] args) {
//1.把奖池里的所有奖项打乱顺序
int[] arr={52,688,888,999,9999};
Random r=new Random();
for (int i = 0; i < arr.length; i++) {
//获取随机索引
int randomIndex=r.nextInt(arr.length);
//拿着i和随机索引randomIndex中的值进行交换
int temp=arr[i];
arr[i]=arr[randomIndex];
arr[randomIndex]=temp;
}
//遍历奖池,从0开始获取每一个奖项
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}