第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] + "元抽奖金额"); } } }