Страница 1 из 1

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

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

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

Добавлено: 07 сен 2013, 21:36
Elek
Нужен рандом ?

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

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

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

Добавлено: 07 сен 2013, 23:26
antihawk
Elek писал(а):Нужен рандом ?

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

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

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

Добавлено: 08 сен 2013, 00:19
Foenix
тю, ну поставь дальше проверку, если чесло совпало, то random еще раз!

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

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

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

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;

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

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

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

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

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

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

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

Добавлено: 08 сен 2013, 16:44
Elek
Судя по ссылке, можно сделать так:

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

// 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);
		}
Как-то так.

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

Добавлено: 08 сен 2013, 17:49
rezak90
я вижу с коллекциями вообще никто не дружит
Elek
копировать каждый элемент с коллекции в массив очень жестока))) ведь есть уже готовые методы

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

Добавлено: 08 сен 2013, 20:25
Elek
rezak90,
Вот так надо :
Integer[] randomIntegers = integers.toArray(new Integer[0]); ?

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

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

Добавлено: 08 сен 2013, 20:37
rezak90
Elek писал(а):rezak90,
Вот так надо :
Integer[] randomIntegers = integers.toArray(new Integer[0]); ?

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