我可以使用
创建一个范围内的随机数Random rand = new Random();
int num = rand.nextInt(10);
System.out.println("Generated Random Number between 0 to 10 is : " + num);
但是如果我需要生成的下一个随机数是已经生成的范围minus
的一部分,那么将上述语句保留在循环中就足够了吗?
此外,我需要在排除范围内的所有数字后停止。
例如,
代码在[0-10],
之间给出了一个随机数 1st - 4
- 范围{[0-10]}
2nd - 9
- 范围{[0-10] -4}
3rd - 8
- 范围{[0-10] -4,9}
...
...
10th - 10
- 范围{[0-10] - [0-9]}
此功能是否会从[Range] {这是我的要求}或(范围)输出?或者有更好的替代解决方案吗?
答案 0 :(得分:3)
最简单的方法可能是:
Collections.shuffle()
on that list 类似的东西:
List<Integer> numbers = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 10);
Collections.shuffle(numbers);
System.out.println(numbers);
如果默认不适合您,您甚至可以provide a random generator进行洗牌操作。
答案 1 :(得分:0)
我不认为这是可能的。尝试记住您已在列表中生成的数字,并使用它来生成更多随机数,直到您找到一个不在列表中的数字。