在做的同时不能避免产生相同的随机数

时间:2014-05-06 08:22:32

标签: java android

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

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

现在我尝试生成一个随机数并显示上面数组的内容(funnyRiddles[rand]),但是当我显示{{{的所有值时,我想停止生成randoms 1}}数组,代码如下:

funnyRiddles

现在每1-2次点击一下,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 个答案:

答案 0 :(得分:5)

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

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