随机抽取的一种新思路

    之前做到一个关于抽奖的业务,偶然看到论坛上很久以前有过关于这个的讨论,大多数人的意思是用Math.random(),然后根据随机出来的下标对应集合下标,但是这个方法有个缺点就是需要手动处理重复数据,发现一个新奇的思路,用Collections.shuffle()打乱集合顺序,然后根据业务需求取前几个数据,但是原作者还是额外创建了一个数组存储存放下标,显得不那么潇洒- -,自己写了个没有额外数组的。当然,抽奖集合和获奖人数可以作为参数传入,此例重在推荐一种思路。新手,不足之处望指正。
</pre><pre name="code" class="java">import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class RaffleMethod {
    protected static  List<String> list = Arrays.asList(new String[]{"孔明","玄德","翼德","孟德","子龙","云长","公瑾","仲谋","孟起","汉升","伯言","奉先","文远","仲达","奉孝","元直"});
    public static void main(String[] args) {
         Collections.shuffle(list);//打乱顺序
         list = list.subList(0, 4);//取打乱顺序后的前四个即可,假设我们要抽取四位幸运观众- -!当然可以通过接收参数控制数量(注意取不到下标为4的那个    0<=i<4)
         for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章