我需要以随机顺序显示数字1-10。第一次执行时的示例出现是:5,4,8,7,9,1,2,3
。第二次执行时的示例是:7,6,5,1,2,3,4,9,8
以下代码是否会随机打印范围之间的所有日期?
Random r = new Random();
int i1 = r.nextInt(80 - 65) + 65;
答案 0 :(得分:1)
您可以使用Collections.shuffle()
方法。 (有关此SO question)的更多信息
在你的例子中:
List<int> numbers = new ArrayList<int>();
int min = 65;
int max = 85;
for (int i = min; i <= max; i++) {
numbers.add(i);
}
Collections.shuffle(numbers);
答案 1 :(得分:0)
使用shuffle也可以。这就是你手动操作的方式。
Random r = new Random();
List<Integer> list = new ArrayList<Integer>();
for (int i=min ; i<= max ; i++){
list.add(i); // adding your data
}
List<Integer> list2 = new ArrayList<Integer>().addAll(list);
//you don't need to use
//list2 if you are ok with losing list.
//As here list2 is being emptied ..
while(list2.size() > 0){
int randomIndex = r.nextInt(0, list2.size);
System.out.println(list.get(randomIndex));
list2.remove(randomIndex);
}