第16天

一、抽奖

 

package com.lianxi.www;

import java.util.Random;

public class 随机抽奖 {
    public static void main(String[] args) {
        // 1、定义数组存储所有奖项金额。
        int[] arr = { 2, 588, 888, 1000, 10000 };
        // 2、采用随机数获得每次抽奖的索引。
        Random r = new Random();
        int[] newArr = new int[5];
        int prize;
//获取奖项数组的长度范围内的随机索引,然后将随机金额存进定义的整形数里,随后判断是否以及存在于新数组中。
        // 4、判断所抽取的金额是否存在于新数组中,如果不存在,那么将此金额存入新数组。
        for (int i = 0; i < arr.length;) {
            prize = arr[r.nextInt(arr.length)];
            boolean flag = cunzai(newArr, prize);
            if (!flag) {
                newArr[i] = prize;
                i++;
            }
        }
        // 5、遍历新数组。
        for (int i = 0; i < newArr.length; i++) {
            System.out.println("获得" + newArr[i] + "元抽奖金额");
        }
    }

//3、定义方法验证每次所抽到的数字金额是否还存在。
    public static boolean cunzai(int[] arr, int prize) {
        for (int i = 0; i < arr.length; i++) {
            if (prize == arr[i]) {
                return true;
            }
        }
        return false;
    }
}
获得2元抽奖金额
获得588元抽奖金额
获得1000元抽奖金额
获得10000元抽奖金额
获得888元抽奖金额

 除了以上方法我们还可以进行打乱数组顺序来实现顺序不同的效果。

package com.lianxi.www;

import java.util.Random;

public class 随机抽奖2 {
    public static void main(String[] args) {
        Random r = new Random();
        int[] arr = { 2, 588, 888, 1000, 10000 };
        // 1、获取随机索引
        int index;
        for (int i = 0; i < arr.length; i++) {
            index = r.nextInt(arr.length);
            // 2、将数组所在值与抽到随即索引的值互换,从而造成随机抽奖的效果。
            int temp;
            temp = arr[i];
            arr[i] = arr[index];
            arr[index] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println("获得" + arr[i] + "元抽奖金额");
        }
    }
}

 

 

 

posted @ 2023-07-17 17:22  七安。  阅读(5)  评论(0编辑  收藏  举报