1

ダブルスのリストがあります。この目的のために、1、2、3、4、5、6、7などの名前のダブルスが100まであるとします。それぞれが値に設定されます。(値は名前に対応していません)。

これらのうち10個をランダムに選択し、選択したものをそれぞれ別のダブルに設定するにはどうすればよいですか?

EG Say double "one"が選択され、他に9つ選択されています。

また、doubleの「blah」を選択したdoubleの値に設定したいと思います。次に、doubleの「blahtwo」を次に選択したdoubleの値に設定します。

同じダブルを2回ランダムに選択したくありません。

コード例:

  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;

したがって、「カード」という名前のダブルをランダムに10個選択します。cardone、cardtwoなど。

そして私は「走った」という名前のダブルスが欲しいです。「ranone」「rantwo」など…選択した10個のダブルと同じに設定します。

4

2 に答える 2

2

ArrayList<Double>Doubleの配列ではなく、Doubleのコレクションを使用してCollections.shuffle(myArrayList)から、ArrayListを呼び出します。ビンゴ、ランダム化。これらの値を10個取得するremove(0)には、リストを呼び出すだけです(サイズが0でないことを確認した後)。

これは、カードのデッキをシャッフルしてランダムに10枚のカードを選択することとそれほど違いはありません。

編集
私はあなたが実際にトランプをモデル化しようとしていることに気づいていませんでした。その場合は、今していることをやめて、doublesの使用を忘れてください。代わりに、トランプは列挙型が何に適しているかを示す最も純粋な例であるため、列挙型について学び、使用してください。これらすべてを説明する優れたリンクは、ここにあります

于 2012-09-15T01:32:03.197 に答える
1

これが非常に簡単な解決策です:

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、ダブルスを取得するためにそれらを繰り返すことができます。

于 2012-09-15T01:35:58.330 に答える