如何获得两个范围之间的随机数?

时间:2016-11-07 03:19:20

标签: java random

我需要以随机顺序显示数字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;

2 个答案:

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