簡體   English   中英

隨機選擇一組雙打

[英]Randomly select a group of doubles

我有一個雙打列表,為了這個目的,我可以說我有一個,兩個,三個,四個,五個,六個,七個等等的雙打......到100.每個都設置為一個值。 (這些值與名稱不對應)。

如何隨機選擇其中的10個,並將每個選定的設置為另一個?

EG說選擇雙“一”,以及另外9個。

我還想將雙“blah”設置為所選雙精度值。 然后我想將雙“blahtwo”設置為下一個選定的double的值,等等...

我不想隨機選擇兩次相同的雙倍。

示例代碼:

  double cardone, cardtwo, cardthree, cardfour, cardfive, cardsix, cardseven, cardeight, cardnine, cardten, cardeleven, cardtwelve, cardthirteen, cardfourteen, cardfifteen, cardsixteen, cardseventeen, cardeighteen, cardnineteen, cardtwenty;

double ran, ranone, rantwo, ranthree, ranfour, ranfive, ransix, ranseven, raneight, rannine, ranten;

cardone = 1.01;
        cardtwo = 1.02;
        cardthree = 1.03;
        cardfour = 1.04;
        cardfive = 1.05;
        cardsix = 1.06;
        cardseven = 1.07;
        cardeight = 1.08;
        cardnine = 1.09;
        cardten = 1.1;
        cardeleven = 1.11;
        cardtwelve = 1.12;
        cardthirteen = 1.13;
        cardfourteen = 2.01;
        cardfifteen = 2.02;
        cardsixteen = 2.03;
        cardseventeen = 2.04;
        cardeighteen = 2.05;
        cardnineteen = 2.06;
        cardtwenty = 2.07;

所以我想隨機選擇其中十個雙打,其名稱為“card”,例如。 cardone,cardtwo等

我想要名為“跑”的雙打,例如。 “ranone”“rantwo”等...被設置為與十個選定的雙打相同。

我使用Collection of Double,比如說ArrayList<Double>而不是double數組,然后在ArrayList上調用Collections.shuffle(myArrayList) 賓果,隨機。 要獲得其中的10個值,只需在列表上調用remove(0) (在檢查后確保大小不為0)。

這與洗牌和選擇10張隨機牌並沒有太大區別。

編輯
我沒有意識到你實際上是在試圖模擬撲克牌。 如果是這種情況,那么請停止你正在做的事情並忘記使用雙打。 而是學習和使用枚舉,因為撲克牌幾乎是枚舉有用的最純粹的例子。 可以在此處找到描述所有這些內容的優秀鏈接。

這是一個非常簡單的解決方案:

List<Double> doubles = new ArrayList<Double>();
// Add all 100 of your doubles
shuffle(doubles);

然后shuffle是通用的,可以使用任何列表:

private static <T> void shuffle(List<T> list) {
    int size = list.size();
    Random rand = new Random();
    for (int i = 0; i < size) {
        list.add(list.remove(rand.nextInt(size - i)));
    }
}

這將選擇一個隨機的,尚未選擇的值,並將其放在列表的末尾。 如果你想要更好的解釋,那就這么說吧。 在調用shuffle之后,列表將被隨機化,你可以迭代它們來獲得雙打。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM