如何不生成两次数字?

cod*_*e22 0 java android

在我的程序中,我使用的是随机生成器.

Random random = new Random();

//How i use it
int i = random.nextInt(numberNeeded);
Run Code Online (Sandbox Code Playgroud)

问题是,我需要找到一种方法,每个数字只生成一次.所以我猜它不是完全随机....例如....当生成数字1时,我不希望再次调用它,而是调用其他数字之一...像2,3或4 ...然后当4呼叫时它只能呼叫2或3 ..

然后下一次数字被洗牌然后重复这个过程......

数字需要从4到16不等

ian*_*ake 7

在要选择的元素列表中使用Collections.shuffle可能要容易得多:

ArrayList<Integer> numbers = new ArrayList<Integer>();
for (int i=4; i<=16; i++)
    numbers.add(i);
Collections.shuffle(numbers);
// numbers is now in a random order and contain the numbers 4 through 16
Run Code Online (Sandbox Code Playgroud)

  • @ coder_For_Life22 - 第一个随机数是`numbers.get(0)`,`second numbers.get(1)`等. (3认同)