2013-04-25 3 views
4

У меня возникли проблемы с помещением случайных чисел в массивы в моем тестовом классе. Код находится в java. Я не могу сделать это индивидуально, потому что в конечном итоге мне нужно будет заполнить массивы до 600 значений. Вот тестовый класс:Заполнение моих массивов случайными числами?

import java.util.Random; 

public class test { 
    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     int size = 1000; 
     int max = 5000; 
     int[] array = new int[size]; 
     int loop = 0; 

     Random generator = new Random(); 
     //Write a loop that generates 1000 integers and 
     //store them in the array using generator.nextInt(max) 

     generator.nextInt(max); //generating one 

     //I need to generate 1000 
     //So I need some kind of loop that will generate 1000 numbers. 
     for (int i =0; i<1000; i++) 
     { 
      generator.nextInt(max); 
     } 

     /** 
     * After I do this, I'll have the array, array. 
     * Then comes what's under this. 
     * THat method is for measuring the time. 
     * System.currentTimeMillis();, 
     * with this, I can collect a time for the start of the method 
     * and one for the end. 
     * Time at the end, minus the time at the start 
     * gets us the running time. 
     */ 

     long result; 

     long startTime = System.currentTimeMillis(); 
     sort.quickSort(array, 100, array.length-1); 

     long endTime = System.currentTimeMillis(); 
     result = endTime-startTime; 

     System.out.println("The quick sort runtime is " + result + " miliseconds"); 

     long result2; 

     long startTime2 = System.currentTimeMillis(); 
     sort.partition(array, 100, array.length-1); 
     long endTime2 = System.currentTimeMillis(); 
     result2 = endTime2 - startTime2; 
     System.out.println("The partition runtime is "+result2 + " miliseconds"); 

     long result3; 

     long startTime3 = System.currentTimeMillis(); 
     sort.bubbleSort(array, 100); 
     long endTime3 = System.currentTimeMillis(); 
     result3 = endTime3-startTime3; 
     System.out.println("The bubble sort runtime is "+result3 + " miliseconds"); 

     long result4; 

     long startTime4 = System.currentTimeMillis(); 
     sort.selectionSort(array, 100); //change the second number to change 
     //the size of an array. 
     long endTime4 = System.currentTimeMillis(); 
     result4 = endTime4-startTime4; 
     System.out.println("The selection sort runtime is "+result4 + " miliseconds"); 

    } 
} 

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

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

ответ

8

Вам просто нужно изменить линию внутри цикла, чтобы присвоить случайное число текущему индексу массива.

array[i] = generator.nextInt(max); 

Отъезд Arrays учебник нить все, что нужно знать о создании, инициализации и доступа массивов.

Кстати, вместо того, чтобы повторять 1000, ваше состояние цикла должно, вероятно, доходить до size.

for (int i = 0; i < size; i++) 
+0

Это похоже на трюк. Спасибо. –

+3

@MariaStewart Вы понимаете, зачем это необходимо? Спросите себя: как бы полученные вами ценности попали в массив без того, чтобы вы их туда помещали? Это не очень полезно для вас, если вы берете код, подключаете его и думаете, что он «волшебным образом работает». – rliu

0

С 1,8

Arrays.setAll(array, i -> { 
    return generator.nextInt(max); 
}); 

Это заполняет массив случайных чисел от 0 (включительно) и max (эксклюзив).

Дальнейшее чтение: The Arrays Class и The IntUnaryOperator Interface

Это, как сказано и сделано, я бы предпочел использовать подход, предоставляемый Bill ящерица, используя цикл для инициализации каждого значения.

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