Как я могу создать и отобразить массив случайных чисел в Java? - PullRequest
1 голос
/ 29 ноября 2010

Я пытаюсь создать массив случайных чисел и отобразить его.Я не уверен, где я иду не так.Я думаю, что мой метод 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 ]

6 голосов
/ 29 ноября 2010

Выньте случайный объект из вашего цикла и не устанавливайте начальное число каждый раз.

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 голос
/ 29 ноября 2010

Ваша проблема в том, что вы продолжаете сбрасывать начальное число и таким образом перезапускаете последовательность генератора псевдослучайных чисел (PRNG).

Сделайте это:

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

}
0 голосов
/ 29 ноября 2010

Не устанавливайте начальное число каждую итерацию

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

Сделайте это один раз.

...