0

次のようなクラスがあるとします。

public class EnglishWords {

    private final String word1;
    private final String word2;
    private final String word3;
    private final String word4;


    public EnglishWords(String word1Arg, String word2Arg, String word3Arg, String word4Arg) {
        this.word1 = word1Arg;
        this.word2 = word2Arg;
        this.word3 = word3Arg;
        this.word4 = word4Arg; 
    }

    public String getword1() {
        return word1;
    }

    public String getword2() {
        return word2;
    }


        public String getword3(){
            return word3; 
        }

        public String getword4(){
            return word4; 
        }
    }

次のようなオブジェクトを作成します。

EnglishWords englishWords = new EnglishWords(words.get(0),
                words.get(1), words.get(2), wordPair.getEnglishWord());

メンバーをシャッフルしてランダムに並べ替えるクラスに追加できる並べ替えメソッドはありますか?

4

3 に答える 3

6

はい。それらを に保持して、リストをシャッフルするためにList使用できます。Collections.shuffle()

自分でシャッフルしたい場合、またはシャッフルする方法に興味がある場合は、 fisher-yates アルゴリズムを使用すると、指定されたリストの均一に分散された順列が得られます。

于 2012-09-10T20:54:28.570 に答える
1

Math.Random を使用してみて、必要な単語の数に制限して、数値を生成するたびに擬似ランダムに単語を選択するようにします...または、ランダムにシャッフルされた方法で単語を設定する場合は、同じものを使用しますそれらを英単語に追加する前に!

編集:アミットが言ったことはより良いです、それを完全に忘れていました!:$

于 2012-09-10T20:54:59.997 に答える
1

そのようです:

List<String> argumentList = new ArrayList<String>();

agumentList.add(words.get(0));
agumentList.add(words.get(1));
agumentList.add(words.get(2));
agumentList.add(wordPair.getEnglishWord());

Collections.shuffle(argumentList);

EnglishWords englishWords = new EnglishWords(argumentList.get(0), argumentList.get(1), argumentList.get(2), argumentList.get(3));
于 2012-09-10T20:58:08.997 に答える