сгенерировать 4 разных чисал

Ответить
Аватара пользователя
antihawk
Сообщения: 84
Зарегистрирован: 09 июн 2013, 16:14

сгенерировать 4 разных чисал

Сообщение antihawk » 07 сен 2013, 17:50

Всем привет, нужно с генерировать 4 разных числа, кто-то может помочь, потому что мой код не работает.

Аватара пользователя
Elek
Сообщения: 55
Зарегистрирован: 29 май 2012, 09:57

Re: сгенерировать 4 разных чисал

Сообщение Elek » 07 сен 2013, 21:36

Нужен рандом ?

Код: Выделить всё

 Random rand = new Random(); 
 int randomNumer = rand.nextInt(100);
Код сгенерирует число от 0 до 99.

Аватара пользователя
antihawk
Сообщения: 84
Зарегистрирован: 09 июн 2013, 16:14

Re: сгенерировать 4 разных чисал

Сообщение antihawk » 07 сен 2013, 23:26

Elek писал(а):Нужен рандом ?

Код: Выделить всё

 Random rand = new Random(); 
 int randomNumer = rand.nextInt(100);
Код сгенерирует число от 0 до 99.
они дожны быть еще разные все, без повторений

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: сгенерировать 4 разных чисал

Сообщение Foenix » 08 сен 2013, 00:19

тю, ну поставь дальше проверку, если чесло совпало, то random еще раз!
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Elek
Сообщения: 55
Зарегистрирован: 29 май 2012, 09:57

Re: сгенерировать 4 разных чисал

Сообщение Elek » 08 сен 2013, 01:06

Так, набросал то, что пришло в голову, если совсем неоптимально, поправьте меня пожалуйста :) :

Код: Выделить всё

Random rand = new Random();
		List<Integer> integers = new ArrayList<>(4);
		for (int i = 0; i < 4; i++) {
			int randNumber = rand.nextInt(5);
			if(!integers.contains(randNumber)){
				integers.add(randNumber);
			} else {
				System.out.println("There is such number in list: " + randNumber);
				i--;
			}
		}
Создаем ArrayList интов, можно использовать и другой тип. Делаем итерацию 4 раза, проверяем нет ли такого числа в ArrayList, если нет - добавляем, если такое числое уже есть - уменьшаем "i" на 1;

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: сгенерировать 4 разных чисал

Сообщение rezak90 » 08 сен 2013, 11:09

эх, молодёж :D Инна, не стыдно такое предлагать? Как ты думаешь сколько раз будет проверяться в таком случае? В итоге есть шанс попасть в бесконечный цикл...
Короче всё делается одной строкой: http://docs.oracle.com/javase/6/docs/ap ... il.List%29
R.id.team
Политика на форуме запрещена

Аватара пользователя
antihawk
Сообщения: 84
Зарегистрирован: 09 июн 2013, 16:14

Re: сгенерировать 4 разных чисал

Сообщение antihawk » 08 сен 2013, 14:57

Foenix писал(а):тю, ну поставь дальше проверку, если чесло совпало, то random еще раз!
я так и сделал, но в итоге, все равно числа повторяются

Аватара пользователя
antihawk
Сообщения: 84
Зарегистрирован: 09 июн 2013, 16:14

Re: сгенерировать 4 разных чисал

Сообщение antihawk » 08 сен 2013, 14:59

rezak90 писал(а):эх, молодёж :D Инна, не стыдно такое предлагать? Как ты думаешь сколько раз будет проверяться в таком случае? В итоге есть шанс попасть в бесконечный цикл...
Короче всё делается одной строкой: http://docs.oracle.com/javase/6/docs/ap ... il.List%29
ничего не понял, перейдя по ссылке

Аватара пользователя
Elek
Сообщения: 55
Зарегистрирован: 29 май 2012, 09:57

Re: сгенерировать 4 разных чисал

Сообщение Elek » 08 сен 2013, 16:44

Судя по ссылке, можно сделать так:

Код: Выделить всё

// 1. Создать массив и заполнить его числами:
List<Integer> integers = new ArrayList<Integer>();
		for (int i = 0; i < 20; i++) {
			integers.add(i);
		}

// 2. Перемешать его:
Collections.shuffle(integers);

// 3. Создать массив нужного размера для "рандомальных" чисел и заполнить его из предидущего:
int[] randomNumbers = new int[4];
		for (int i = 0; i < randomNumbers.length; i++) {
			randomNumbers[i] = integers.get(i);
		}
Как-то так.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: сгенерировать 4 разных чисал

Сообщение rezak90 » 08 сен 2013, 17:49

я вижу с коллекциями вообще никто не дружит
Elek
копировать каждый элемент с коллекции в массив очень жестока))) ведь есть уже готовые методы
R.id.team
Политика на форуме запрещена

Аватара пользователя
Elek
Сообщения: 55
Зарегистрирован: 29 май 2012, 09:57

Re: сгенерировать 4 разных чисал

Сообщение Elek » 08 сен 2013, 20:25

rezak90,
Вот так надо :
Integer[] randomIntegers = integers.toArray(new Integer[0]); ?

или по другому ? Обьясни пожалуйста :)

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: сгенерировать 4 разных чисал

Сообщение rezak90 » 08 сен 2013, 20:37

Elek писал(а):rezak90,
Вот так надо :
Integer[] randomIntegers = integers.toArray(new Integer[0]); ?

или по другому ? Обьясни пожалуйста :)
у листа есть метод subList
R.id.team
Политика на форуме запрещена

Ответить