利用随机数生成数组下标之模拟直播抽奖【抢红包】

题目:
一个大V直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。
要求:

打印效果如下:(随机顺序,不一定是下面的顺序) 
588元的奖金被抽出
10000元的奖金被抽出
1000元的奖金被抽出
2元的奖金被抽出
888元的奖金被抽出

分析:

+ 定义一个数组用于存储这些奖金金额。
+ 定义一个数组用于判断该奖金是否被取出过
+ 每次抽奖都随机一个索引,取出索引对应的奖金金额,判断该金额之前是否抽中过,抽中过从新抽一次。

关键点:

如何保证每次抽奖的金额不是之前抽过的

代码演示:

public class GrabARedEnvelope {
    
    
    public static void main(String[] args) {
    
    
        //红包中金额
        int[] money = {
    
    2,588,888,1000,10000};
        //产生一个随机数
        Random random = new Random();
//        用于判断该数是否被取出过
        boolean[] boo = new boolean[5];
//        计数器,循环条件
        int count = 0;
        while (count < 5){
    
    
//            随机抽取
            int index = random.nextInt(money.length);
//            如果值为ture,则代表该数被取出过,直接进入下一循环
            if (boo[index]){
    
    
                continue;
            }
//            否则,将该数取出,并标记该数被取出过
            else {
    
    
                count++;
                System.out.println(money[index]+"元的奖金被抽出");
                boo[index] =true;
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/heart_is_broken/article/details/123364831