我正在尝试生成随机数字的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]
非常感谢任何帮助。提前致谢
答案 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());
做一次。