【问题标题】:How can I create and display an arraylist of random numbers in java?java - 如何在java中创建和显示随机数的arraylist?
【发布时间】:2010-11-29 19:29:22
【问题描述】:

我正在尝试生成一个随机数的数组列表并显示它。我不确定我哪里出错了。我认为我的 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]

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

【问题讨论】:

    标签: java arraylist random


    【解决方案1】:

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

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

    这应该会更好。

    【讨论】:

    • 没错!否则,您最终将使用相同的种子重新设置随机数生成器几次(因为它的运行速度会超过一毫秒)
    • 非常感谢!这是一种享受。对于有更多经验的人来说,最明显的事情就是让像我这样的新手非常痛苦!
    【解决方案2】:

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

    这样做:

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

    【讨论】:

    • 感谢您的帮助。完美运行。非常感谢!
    【解决方案3】:

    不要每次迭代都设置种子

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

    做一次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 2011-02-12
      • 2011-05-13
      • 1970-01-01
      • 2011-05-18
      • 2021-12-20
      相关资源
      最近更新 更多