隨機抽取的一種新思路

    之前做到一個關於抽獎的業務,偶然看到論壇上很久以前有過關於這個的討論,大多數人的意思是用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));
        }
    }
}




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