Я делаю игру, которая будет задавать разные вопросы в java. вопросы хранятся в некотором arraylist. Моя проблема заключается в том, что эти вопросы не следует повторять. и если все вопросы заданы, программа должна остановиться. Я использовал случайную функцию java. но он провалился. любая помощь будет заметна С уважениемгенерирование не повторяющихся случайных чисел в java
ответ
Копировать список вопросов к временному списку, и
while(list.size() > 0){
int i = Math.floor(Math.Random() * list.size());
list.get(i); //do something with question
list.remove(i);
}
Это петля, пока список содержит элементы, тянущие случайный элемент и затем удаляет его из списка.
редактировать для осветления - это гарантирует, что вы не получаете дубликаты
все, что я хочу сделать, это выбрать любой случайный вопрос у arraylist и убедиться, что вопрос не повторится после того, как он был спрошен. То, как вы говорите, будет идти по порядку, насколько я предполагаю. теперь я надеюсь, что моя проблема понятна вам.если есть 50 вопросов. Я хочу, чтобы любой вопрос из всех 50-х спросил. как бы это ни было 40-й в первый раз. но после того, как его спросили, его не следует повторять. Все 50 вопросов должны быть заданы случайным образом –
Именно это и делает этот код, вы генерируете случайное число между 0 и размером списка, затем вынимаете вопрос и удаляете вопрос из списка по этому индексу, чтобы убедиться, что он не является - Нет. Затем, после этого, сгенерируйте другое случайное число, используя новый размер (размер - n) списка. –
thanx это действительно сработало –
Если я правильно понял ваш вопрос, вы хотите отобразить вопросы в случайном порядке. Существует простое решение этой проблемы. Используйте метод java.util.Collections.shuffle
для случайной перестановки вопросов в списке. И затем итерацию с самого начала по списку. Этот алгоритм имеет линейную временную и пространственную сложность.
Но я не хочу повторять любой вопрос, когда программа выполняется. Если бы возникли все вопросы, это должно было дать мне сообщение вроде «все вопросы». –
Вы только перетасовываете один раз. список -> «все сделано» – barsju
'shuffle' ia, как перетасовка колоды карт. Вы не получите повторений. – emory
- 1. генерирование случайных чисел без дубликатов в java
- 2. Java - генерирование 3 случайных чисел
- 3. уникальное генерирование случайных чисел
- 4. Надежное генерирование случайных чисел
- 5. Пользовательское генерирование случайных чисел
- 6. SIMPLE генерирование случайных чисел
- 7. Правильное генерирование случайных чисел
- 8. генерирование случайных чисел в php
- 9. генерирование случайных чисел в verilog
- 10. высева и генерирование случайных чисел
- 11. C++ генерирование случайных чисел-1
- 12. Эффективное генерирование дискретных случайных чисел
- 13. Ограничение повторяющихся случайных чисел
- 14. Boost library - не генерирование отдельных случайных чисел
- 15. Хорошее введение в (псевдо) генерирование случайных чисел
- 16. Быстрое генерирование случайных чисел в C
- 17. Быстрое генерирование случайных чисел в C#
- 18. генерирование случайных чисел в визуальных основах
- 19. Эффективное создание списка случайных чисел, не повторяющихся в Java
- 20. python - генерация не повторяющихся случайных пар чисел
- 21. Генератор случайных чисел без повторяющихся чисел
- 22. генерирование случайных чисел без последовательного повторения
- 23. Равномерное генерирование случайных чисел из набора
- 24. Генерирование случайных чисел с помощью MATLAB
- 25. Быстрое генерирование случайных чисел, которые кажутся случайными
- 26. генерирование отсортированных случайных чисел без участия экспоненции?
- 27. генерирование случайных чисел с различными вероятностями
- 28. генерирование нечетных случайных чисел с использованием Matlab
- 29. Пакетное генерирование случайного числа случайных чисел
- 30. C++ генерирование случайных чисел внутри цикла
Как Случайные неудачные? Вы его засеваете, например. с текущим временем? – j13r
['shuffle()'] (http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#shuffle (java.util.List% 29) список. – NullUserException
Каждый список, который я shuffeling – j13r