Я пытаюсь выяснить, как я могу получить случайные строки из таблицы, в том числе 10 слов. Я создаю игровой палач, но я не хочу, чтобы одно слово дважды. Игра должна продолжаться до тех пор, пока не будет выбрано 5 слов.Получите случайную строку из таблицы, но не более одного раза
Есть ли хорошие решения? Это метод рандомизации для моей таблицы, как сейчас.
private String wordList[] = { "String1", "String2", ..... }
public void getRandomWord(){
Random generator = new Random();
int r = generator.nextInt(9);
activeWord = wordList[r];
}
Я пытался получать эту работу, но не повезло:
ArrayList<String> usedWords= new ArrayList<String>();
public void getRandomWord(){
Random generator = new Random();
int r = generator.nextInt(9);
if(addWord(wordList[r])){
activeWord= wordList[r];
}
}
private boolean addWord(String word) {
for(String v : usedWords){
if(!v.equals(word)){
usedWords.add(word);
return true;
}
else{
getRandomWord();
}
}
return false;
}
Я думаю, что я сделал итерации, но я предполагаю то не nessasary.
Я думал о наличии таблицы строк с булевым значением. Поэтому, если значение слова истинно, плохо возьмите его, если его нет, плохо продолжайте, пока я не найду слово.
Я мог бы использовать цикл while для этого?
Перемешать его заранее, а затем просто выбрать в порядке. Нет поисковых запросов, без булевых элементов, без столкновений. Посмотрите на такие алгоритмы, как Fisher-Yates. –