2012-02-24 5 views
2

Мне просто нужно знать, что я должен сделать, чтобы сделать базовый массив заполненным произвольно сгенерированными числами. теперь я знаю, как это сделать, что я не знаю, как сделать это, чтобы сделать так, чтобы случайно сгенерированные числа были больше, чем последнее число, сгенерированное до конца массива.Произвольно сгенерированные числа в базовом массиве

ответ

1

Производите случайные числа, а затем сортируйте массив.
Вы можете отсортировать массив с помощью Arrays.sort()

Это не убедитесь, что каждое число строго больше, то предыдущие числа [это gurantees только <=], так что если это проблема - вы должны убедиться, что вы не имеют обмана в сгенерированных числах.

1

Вы можете создать массив случайных чисел, а затем отсортировать его, используя Array sort.

+0

Да, теперь, когда я перехожу в свой класс драйвера, чтобы отобразить массив с S.O.P. я получаю ошибку времени выполнения при arr [i] = gen.nextInt (10000); Я не знаю, почему это делается. Я устанавливаю arr [i] = gen.nextInt (10000) в переменную с именем value, которая является Int – Tigh

+0

@Tigh. Вам нужно показать больше кода и добавить трассировку стека. Пожалуйста, отредактируйте свой вопрос или еще лучше попросите нового, чтобы привлечь больше внимания. – dasblinkenlight

2

Просто сгенерируйте список, а затем отсортируйте его по размеру от наименьшего к наибольшему.

for(int i = 0; i < arr.length; ++i) { 
    arr[i] = Random.nextInt(100); 
} 
Arrays.sort(arr); 
+0

по какой-то причине, когда я его код, он возвращает arr [i] = Random.nextInt (100), в соответствии с примером, а не буквально, как его видно в этом вопросе, я получаю ошибку выполнения в этой строке. для моего фактического кода он считывается как массив [x] = gen.nextInt (10000) ;. Я не могу сказать Random.nextInt (num), потому что это будет статическая ссылка на нестационарный метод. – Tigh

+0

Извините, я хочу сказать в начале комментария, что строка кода вызывает ошибку времени выполнения, она еще ничего не возвращает. – Tigh

0

Вы можете иметь свой собственный алгоритм генерации дополнительных ...

Например ...

Случайные каждый раз, и добавить, что число до последнего :)

Random класс в java не позволяет вам иметь минимальный предел, где начать .. только один ...

Например:

myArray[0] = Random.nextInt(10000); 
for(int i=1; i<myArray.length; i++) 
{ 
    myArray[i] = myArray[i-1]+Random.nextInt(10000); 
} 

Так .. это случайное и вам не придется сортировать его .. стараюсь держать все просто ...

+0

Обратите внимание, что это может завершиться ошибкой из-за [переполнения] (http://en.wikipedia.org/wiki/Arithmetic_overflow). – amit

+0

если у него массив длиной 2000000 .. да :) если есть только 1000 .. нет! :) – Alex

+0

(1) Вы ограничиваете себя без причины, когда используете 'nextInt (10000)'. Вы могли бы просто заполнить его четырьмя. (2) Вы можете переполнить, когда размер массива ~ 200000 [один меньше нуля]. Во всяком случае, это только точка, о которой OP должен думать при использовании этого решения. – amit

1

Был комментарий по этому вопросу, я потерял имя автора, что рекомендованное добавление случайно сгенерированное число до предыдущего числа, которое, как я думал, было интересным.

arr[0] = Random.nextInt(100); 

for(int i = 1; i < arr.length; ++i) { 
    arr[i] = arr[i-1] + Random.nextInt(100); 
} 

Это устраняет необходимость сортировки массива результатов.

+0

Заметьте, что это может завершиться неудачно из-за [целочисленного переполнения] (http://en.wikipedia.org/wiki/Arithmetic_overflow) – amit

+0

@amit, Действительная проблема, в зависимости от используемого случайного диапазона и размера массива. –

+0

Если числа ограничены определенным диапазоном, проблема по-прежнему сохраняется: вы не можете «переполнять», но вы можете получить число, которое выходит за пределы допустимого диапазона. – amit

Смежные вопросы