我对以下代码有疑问
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];
此代码工作正常,但我想知道是否有可能让它连续两次不选择相同的单词。例如,如果它只选择了“红色”,那么它将不会在下一个连续时间再次选择“红色”。我读了一些有关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);
谢谢你的帮助
答案 0 :(得分: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()));
}
答案 1 :(得分:1)
你可以用两种方式做到这一点(可能只有两个,我现在能想到的):
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)您可以创建一个具有与上述函数非常相似的函数的类,然后实例化该类的对象并使用它来生成随机数。在类中创建一个静态变量,它将记住最后生成的随机数。使用它而不是全局变量。
答案 2 :(得分:0)
具体情况有点超出我的联盟,但作为一个数学问题,有24种组合(4 * 3 * 2 * 1)。尽管这听起来很重,但最糟糕的情况是你可以解决所有的组合,然后随机选择一个中的一个。