一 抢红包
需求:
分析:题目条件要求为每个奖项只能被抽取一次,本能会想到Random的随机索引抽取后,在建立新的数组把剩余的奖项放进性的数组,重复这个过程。但是这个思路运行过于复杂,不利于运行。这个是我看见的新思路,建立一个新的数组,把抽取到的奖放进这个数组,再进行比对。
public static void main(String[] args) {
int[] win={2,588,888,1000,10000};
//定义新数组用于存储抽奖的结果
int[] new_win=new int[win.length];
//抽奖
Random ra =new Random();
for (int i = 0; i < win.length;) {
int celest=ra.nextInt(win.length);
if (!win_prize(new_win,win[celest])){
new_win[i]=celest;
i++;
}
}
}
//定义方法判断奖品是否已经被抽取了
public static boolean win_prize(int[] num,int a){
for (int i = 0; i < num.length; i++) {
if (num[i]==a){
return false;
}
}
return true;
}