此为工具类,支持抽奖业务需求,具体实现见下方代码:
package com.org.test; import java.util.ArrayList; import java.util.List; public class RandomUtil { /** * 随机抽出中奖用户下标 * 当max < count时,输出max+1个, 如 0,2,5 输出3个结果 * 当max = count时,输出 count个, 如 0,2,2 输出2个结果 * 当max > count 时,输出count个,如 0,5,3 输出3个结果 * @param min * @param max * @param count * @return * @author Shindo * @date 2017年1月7日 下午5:00:14 */ public static int[] getRandomArray(int min, int max, int count) { List<Integer> randomCommon = randomCommon(min, max, count); int size = randomCommon.size(); int[] result = new int[size]; if (size > 0) { for (int j = 0; j < randomCommon.size(); j++) { Integer integer = randomCommon.get(j); result[j] = integer; } System.out.println("随机下标:"); for (int k = 0; k < result.length; k++) { System.out.println(result[k]); } } return result; } /** * 随机指定范围内N个不重复的数 * @param min 指定范围最小值 * @param max 指定范围最大值 * @param n 随机数个数 * @return */ public static List<Integer> randomCommon(int min, int max, int n) { List<Integer> integers = new ArrayList<Integer>(); if (min < 0) { min = 0; } if ((max - min) + 1 < n) { n = (max - min) + 1; } if (max < min) { max = min; } if (max < 0 || n < 0) { return integers; } for (int i = 1; i <= n; i++) { int randomNumber = (int) Math.round(Math.random() * (max - min) + min); if (integers.contains(randomNumber)) { i--; continue; } else { integers.add(randomNumber); } } return integers; } // 测试随机数获取 public static void main(String[] args) { // 当max < count时,输出max+1个,当max = count时,输出 count个, 当max > count 时,输出count个 List<Integer> randomCommon = randomCommon(0, 8, 3); for (int j = 0; j < randomCommon.size(); j++) { Integer integer = randomCommon.get(j); System.out.println(integer); } System.out.println(" "); int size = randomCommon.size(); int[] result = new int[size]; if (size > 0) { for (int j = 0; j < randomCommon.size(); j++) { Integer integer = randomCommon.get(j); result[j] = integer; } System.out.println("抽奖下标打印输出"); for (int k = 0; k < result.length; k++) { System.out.println(result[k]); } } } }