用随机数填充我的数组?

Posted

技术标签:

【中文标题】用随机数填充我的数组?【英文标题】:Filling my arrays with random numbers? 【发布时间】:2013-04-18 19:27:08 【问题描述】:

我无法将随机数放入我的测试类的数组中。代码在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");

    

我已经完成了测试类和它调用函数的另一个类,并且没有错误。我只需要以某种方式将随机值放入数组中。任何建议将不胜感激。

如果你看一下代码,你会发现我已经做了一个小函数来自己生成数字。我只是不知道该怎么做才能让数字进入一个数组。

【问题讨论】:

【参考方案1】:

您只需要更改循环内的行,将随机数分配给数组的当前索引。

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

查看Arrays 教程线程,了解有关创建、初始化和访问数组的所有信息。

顺便说一句,您的循环条件应该上升到size,而不是重复1000

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

【讨论】:

@MariaStewart 你明白为什么它是必要的吗?问问自己:如果不将它们放在数组中,您生成的值将如何进入数组?如果您编写代码、将其插入并认为它“神奇地工作”,这对您并没有真正的好处。【参考方案2】:

自 1.8 起

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

这会用 0(含)和 max(不含)之间的随机数填充您的数组。

延伸阅读:The Arrays Class 和 The IntUnaryOperator Interface

话虽如此,我更喜欢使用 Bill the Lizard 提供的方法,使用循环来初始化每个值。

【讨论】:

以上是关于用随机数填充我的数组?的主要内容,如果未能解决你的问题,请参考以下文章

用随机数 80-100 填充数组并使用以数组作为参数的方法打印两种不同的方式

用随机名称填充的字符串数组

在 C# 中使用线程填充随机数的数组

我可以创建一个用六个随机数填充 100 个数组的循环吗?

首先创建一个长度是5的数组,并填充随机数。首先用选择法正排序,然后再对其使用冒泡法倒排序

如何使用 for-loop if 语句填充具有唯一随机数的数组?