簡體   English   中英

如何在Java中創建和顯示隨機數數組列表?

[英]How can I create and display an arraylist of random numbers in java?

我正在嘗試生成一個隨機數的數組列表並顯示它。 我不確定我要去哪里。 我認為我的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]

任何幫助深表感謝。 提前致謝

將隨機對象移出循環,不要每次都設置種子。

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

這應該更好。

您的問題是您不斷重置種子,從而重新啟動偽隨機數生成器(PRNG)序列。

做這個:

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

}

不要每次迭代都設置種子

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

做一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM