Необходимо прописать генерацию случайных 4х чисел из массива Пока что код выглядит так
Random generator = new Random ();
final int index1 = generator.nextInt ( imageIds1.length );
final int randomImageId1 = imageIds1[ index1 ];
final int index2 = generator.nextInt ( imageIds2.length );
final int randomImageId2 = imageIds1[ index2 ];
final int index3 = generator.nextInt ( imageIds3.length );
final int randomImageId3 = imageIds1[ index3 ];
final int index4 = generator.nextInt ( imageIds4.length );
final int randomImageId4 = imageIds1[ index4 ];
Но проблема в том, что числа иногда повторяются. Как этого избежать?
Если вам необходимо сгенерировать некоторое количество K равновероятно выбранных неповторяющихся случайных целых чисел в заданном диапазоне [0, N) и при этом вам разрешается использовать дополнительную поисковую структуру данных для запоминания уже сгенерированных чисел, то алгоритм, который не делает итераций "проб и ошибок" выглядит так
S - множество уже сгенерированных чисел, изначально пустое
for i = N - K to N - 1
r = random из диапазона [0, i]
if (r не принадлежит S)
новое число - r
добавляем r в S
else
новое число - i
добавляем i в S
Такой алгоритм выбирает каждое число с равной вероятностью, но не обязательно выдает числа на выход в полностью случайном порядке. Если и порядок нужен случайный, то выход алгоритма следует еще дополнительно случайно перетасовать.
В общем, я пришел к ответу. Всем спасибо за помощь, хотя для новичка ваши ответы часто бывают сложнее поставленной задачи)) Оставлю код, может кому пригодится
//random numbers are 0,1,2,3...21
ArrayList<Integer> numbers = new ArrayList<Integer>();
Random r = new Random();
while (numbers.size() < 4) {
int random = r.nextInt(21);
if (!numbers.contains(random)) {
numbers.add(random);
}
}
final int index1 = numbers.get (0);
final int randomImageId1 = imageIds1[ index1 ];
final int index2 = numbers.get (1);
final int randomImageId2 = imageIds1[ index2 ];
final int index3 = numbers.get (2);
final int randomImageId3 = imageIds1[ index3 ];
final int index4 = numbers.get (3);
final int randomImageId4 = imageIds1[ index4 ];
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости