0

String options[4]質問の 4 つのオプションを保持するString の配列を持つプログラムがあります。これらのうち、正解は 1 つです。私のプログラムの論理により、プログラムは正しい答えをoptions[0]に配置し、データベースから他の 3 つの名前をランダムに選択して 、および に配置options[1][2]ます[3]

オプションを配列自体に配置するロジックを変更しようとしましたが、プログラムが複雑になるため、そうしないことにしました。また、ランダム関数を使用して2つの場所を交換しようとしましたが、Android Javaでこれをコーディングしているため、時間がかかりすぎて、デフォルトでは、ランダム関数に時間がかかりすぎるとAndroid OSが応答を停止します. 可能な限り、ランダム関数を使用したくありません。配列をごちゃまぜにするために利用できる他のロジックまたは既製の関数はありますか?? 以下のように、配列内の 4 つのオプションをランダムにごちゃまぜにするコードが必要です。

String options[] = new String[4];
options[0]="Correct Answer";
options[1]="Wrong Answer 1";
options[2]="Wrong Answer 2";
options[3]="Wrong Answer 3";
//here i want the code to jumble

コードを提供してください..ありがとうございます。

4

3 に答える 3

3

それは簡単です:

Collections.shuffle(Arrays.asList(yourArray));

Arrays.asList()提供Listされた配列に基づく を提供するため、Listがシャッフルされると、基になる (元の) 配列もシャッフルされます。

見る:

于 2012-10-29T15:19:30.067 に答える
0

Fisher-Yates shuffleを使用できます。

Random r = new Random();
for(int i = options.length - 1; i > 0; i--){
    int rand = r.nextInt(i);
    String temp = options[i];
    options[i] = options[rand];
    options[rand] = temp;
}
于 2013-11-13T16:55:19.200 に答える
-1

編集:コメントで述べたように、この解決策を無視して、上記の解決策を使用してください。

optionsとして定義したのでString options[]、Java でコーディングしていると思います。Java のジャンブル コードは次のとおりです。

    String options[] = new String[4];
    options[0]="Correct Answer";
    options[1]="Wrong Answer 1";
    options[2]="Wrong Answer 2";
    options[3]="Wrong Answer 3";

    final int jumbleTries = 100;
    Random rand = new Random();

    for(int i = 0; i < jumbleTries; i++)
    {

        int index1 = rand.nextInt(options.length);
        int index2 = rand.nextInt(options.length);

        if (index1 == index2)
            continue;

        String temp = options[index1];
        options[index1] = options[index2];
        options[index2] = temp;
    }
于 2012-10-29T08:07:04.707 に答える