Filling my arrays with random numbers?

54,307

Solution 1

You just need to change the line inside the loop to assign the random number to the current index of the array.

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

Check out the Arrays tutorial thread for everything you need to know about creating, initializing, and accessing arrays.

By the way, instead of repeating 1000, your loop condition should probably go up to size.

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

Solution 2

Since 1.8

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

This fills your array with random numbers between 0(inclusive) and max(exclusive).

Further reading: The Arrays Class and The IntUnaryOperator Interface

That being said and done, I'd prefer to use the approach provided by Bill the Lizard, using a loop to initialize each value.

Share:
54,307
Maria Stewart
Author by

Maria Stewart

Updated on January 16, 2020

Comments

  • Maria Stewart
    Maria Stewart over 4 years

    I'm having trouble putting random numbers into the arrays in my test class. The code is in java. I can't do it individually, because eventually I'll have to fill the arrays with as many as 600 values. Here is the test class:

    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");
    
        }
    }
    

    I've already gone through the test class and the other class that it calls functions from, and there are no errors. I just need to put random values into the arrays somehow. Any advice would be much appreciated.

    If you take a look at the code, you can see that I've already made a small function for generating the numbers themselves. I just don't know how to do that so that the numbers will go into an array.

  • rliu
    rliu about 11 years
    @MariaStewart Do you understand why it's necessary? Ask yourself: How would the values you generated get into the array without you putting them there? It's not really beneficial to you if you take code, plug it in, and think that it "magically works".