如何在java中创建和显示随机数的arraylist?

时间:2010-11-29 19:29:23

标签: java arraylist random

我正在尝试生成随机数字的arraylist并显示它。我不确定我哪里出错了。我认为我的showArray方法不能正常工作,因为它显示两个随机数,然后重复第二个n-2次。

private static ArrayList<Integer> RandomArray(int n)
    {

        ArrayList<Integer> arrayRandom = new ArrayList<Integer>(n);

        for (int i=0; i<n; i++)
        {
            Random rand = new Random();
            rand.setSeed(System.currentTimeMillis());
            Integer r = rand.nextInt() % 256;
            arrayRandom.add(r);

        }

        return arrayRandom;

    }

private static void ShowArray(ArrayList<Integer> randomArray)
{
    int n = randomArray.size();

    ArrayList<Integer> showArray = new ArrayList<Integer>(n);

    for (int i = 0; i<n; i++)
    {
        int r = randomArray.get(i);
        showArray.add(r);
    }
    System.out.println(showArray);

}

public static void main(String args[])
    {

        ShowArray(RandomArray(5));

    }

因此,例如,这将产生

的输出
  

[132,152,152,152,152]

非常感谢任何帮助。提前致谢

3 个答案:

答案 0 :(得分:6)

将随机对象从循环中取出,不要每次都设置种子。

ArrayList<Integer> arrayRandom = new ArrayList<Integer>(n);

Random rand = new Random();
rand.setSeed(System.currentTimeMillis());
for (int i=0; i<n; i++)
{
    Integer r = rand.nextInt() % 256;
    arrayRandom.add(r);
}

这应该会更好。

答案 1 :(得分:1)

您的问题是您不断重置种子,从而重新启动伪随机数生成器(PRNG)序列。

这样做:

Random rand = new Random();
rand.setSeed(System.currentTimeMillis());
for (int i=0; i<n; i++)
{
    Integer r = rand.nextInt(256);
    arrayRandom.add(r);

}

答案 2 :(得分:0)

每次迭代都不要设置种子

        Random rand = new Random();
        rand.setSeed(System.currentTimeMillis());

做一次。