0

次のコードについて質問があります

Random randomGenerator = new Random();
    int randomInt = randomGenerator.nextInt(4);
    String wordList[] = new String[4];
    {
        wordList[0] = "Red";
        wordList[1] = "Blue";
        wordList[2] = "Green";
        wordList[3] = "Orange";


    }

String wordToDisplay = wordList[randomInt];

このコードは正常に動作しますが、同じ単語を 2 回続けて選択しないようにすることが可能かどうかを知りたいです。たとえば、「赤」を選択した場合、次に連続して「赤」を選択することはありません。DISTINCT について何かを読みましたが、それが正しい道に沿っているかどうかはわかりません。

これを使用するボタンのコードは次のとおりです

final Button button1 = (Button) findViewById(R.id.button1);
        final TextView textView = (TextView) findViewById(R.id.text_random_text);
        button1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on click
                Random randomGenerator = new Random();
                int randomInt = randomGenerator.nextInt(9);
                String wordToDisplay = wordList[randomInt];
                textView.setText(wordToDisplay);

ご協力ありがとうございました

4

3 に答える 3

1

リストに移動し、使用した色を削除します。

private static ArrayList<String> arrayList = new ArrayList<String>();
private static Random random = new Random();
public static void fillList(){
    arrayList.add("Red");
    arrayList.add("Blue");
    arrayList.add("Green");
    arrayList.add("Orange");
}
public static String getNextRandomColor(){
    if(arrayList.isEmpty()){
        fillList();
    }
    return arrayList.remove(random.nextInt(arrayList.size()));
}
于 2012-10-01T02:36:09.800 に答える
1

これは2つの方法で行うことができます(おそらく、私が今考えることができる2つ以上です):

1)グローバル変数を使用して最後に生成された乱数を格納する関数を作成します。次のようになります。

int myRand(int i) {
  int aux;
  Random randomGenerator = new Random();

  do {
    aux = randomGenerator.nextInt(i);
  } while (aux != lastRandGenerated);

  lastRandGenerated = aux;

  return aux;
}

、ここで、lastRandGeneratedは、0に初期化するグローバル変数です。

次に、この関数を使用して乱数を生成します。

2)上記と非常によく似た関数を持つクラスを作成し、そのクラスのオブジェクトをインスタンス化し、それを使用して乱数を生成できます。クラスで、最後に生成された乱数を記憶する静的変数を作成します。グローバル変数の代わりにそれを使用してください。

于 2012-10-01T02:37:29.820 に答える
0

詳細は私のリーグから少し外れていますが、数学の問題として、24の組み合わせ(4 * 3 * 2 * 1)があります。これが聞こえるかもしれませんが、最悪の場合、すべてのコンボを実行してから、24個のランダムから1つを選択することができます。

于 2012-10-01T02:31:53.570 に答える