gpt4 book ai didi

java - 无法避免在 do while 中生成相同的随机数

转载 作者:行者123 更新时间:2023-11-29 07:48:17 25 4
gpt4 key购买 nike

我有这个包含一些字符串的数组:

String[] funnyRiddles = { "1", "2", "3", "4" };

现在我正在尝试生成一个随机数并显示上述数组的内容(funnyRiddles[rand]),但我想在显示所有值后停止生成随机数funnyRiddles 数组的代码如下:

Random rnd = new Random();
int randomRiddle = 0;
int clickCounter = 0;
static ArrayList<Integer> passedQuestions = new ArrayList<Integer>();
final RiddlesHolder riddles = (RiddlesHolder) getActivity().getApplication();
askBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (txtAnswer.getText().toString().equals(riddles.getFunnyRiddlesAnswerByPos(randomRiddle))) {
passedQuestions.add(randomRiddle);
do {
if (clickCounter <= passedQuestions.size()) {
randomRiddle = rnd.nextInt(riddles.getFunnyRiddles().length);
clickCounter++;
} else {
Toast.makeText(getActivity().getApplication(),
"No more riddles!", Toast.LENGTH_SHORT).show();
//clickCounter++;
break;
}
} while (passedQuestions.contains(randomRiddle));

TextView text = (TextView) getActivity().findViewById(R.id.txtAnimalRiddle);
text.setText(riddles.getFunnyRiddlesByPos(randomRiddle));
/*Toast.makeText(getActivity().getApplication(),
riddles.getFunnyRiddlesByPos(randomRiddle), Toast.LENGTH_SHORT).show();*/
} else {
Toast.makeText(getActivity().getApplication(),
"Wrong answer!", Toast.LENGTH_SHORT).show();
}
}
});

现在每 1-2 次点击就会出现提示 no mo riddles 的 toast 。它应该在没有更多唯一值时显示。我知道我在这里缺少一些逻辑,但我找不到正确的方法。上面的代码可能是无用的废话,但这就是我到目前为止的结果。

最佳答案

如果我对你的问题的理解正确,你想以随机顺序显示谜语。但是您正在做的是显示列表中的四个随机谜语,这很可能导致至少一个谜语被显示不止一次。

如果这个解释是正确的,最简单的解决方案可能是生成一个 random permutation谜语数组,然后按该顺序显示它们。

关于java - 无法避免在 do while 中生成相同的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23489518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com