Звучит достаточно просто ... но я затягиваю это, пытаясь найти единственное и полное решение.
Для диапазона чисел, скажем, 1-12 Я хочу сгенерировать случайную последовательность в этом диапазоне, и включают 1 и 12 .
Я не хочухотя дубликаты чисел .
Так что я бы хотел что-то вроде этого - 3,1,8,6,5,4 .. и так далее, каждое число от 1-12.
Затем я хочу поместить эти случайные числа в Array
и использовать этот массив для «случайного» выбора и отображения некоторых элементов (например, инвентарь, извлеченный из базы данных) на странице JSP.
Проблема с тем, что яДо сих пор пытались выяснить, существует ли много повторяющихся номеров ... или не выбрано ALL номеров.
Есть ли простое решение этой проблемы?
Редактировать
Тест № 1 с использованием Collections
и shuffle()
метода-
ArrayList<Integer> list = new ArrayList<Integer>(10);
for(int i = 0; i < 10; i++)
{
list.add(i);
}
Collections.shuffle(list);
String[] randomNumbers = (String[])list.toArray();
for(int i = 0; i < 10; i++)
{
out.print(randomNumbers[i]+"<br>");
}
ResuЭто была последовательность с дублирующимися значениями -
выбрано = 3
выбрано = 8
выбрано = 7
выбрано = 5
выбрано = 1
выбрано = 4
выбрано = 6
выбрал = 4
выбрал = 7
выбрал = 12
Тест № 2 - с использованием класса математики Random
int max = 12;
int min = 1;
int randomNumber = 0;
String str_randomNumber = "";
for(int i=0; i<10; i++) {
//int choice = 1 + Math.abs(rand.nextInt(11));
int choice = min + (int)(Math.random() * ((max - min) + 1));
out.print("chose = "+choice+"<br>");
}
Результат был похож на Collections.shuffle()
.