Random Number but Don't Repeat

后端 未结 4 1889
轻奢々
轻奢々 2020-12-02 03:12

I would like to generate a random number less than 50, but once that number has been generated I would like it so that it cannot be generated again.

Thanks for the h

4条回答
  •  爱一瞬间的悲伤
    2020-12-02 03:37

    Please see: Fisher–Yates shuffle:

    public static void shuffle (int[] array) 
    {
        Random rng = new Random();       // i.e., java.util.Random.
        int n = array.length;            // The number of items left to shuffle (loop invariant).
        while (n > 1) 
        {
            n--;                         // n is now the last pertinent index
            int k = rng.nextInt(n + 1);  // 0 <= k <= n.
            int tmp = array[k];
            array[k] = array[n];
            array[n] = tmp;
        }
    }
    

提交回复
热议问题