小编典典

Java-生成特定数字的随机范围而不重复这些数字-如何?

java

听起来很简单…但是我一直在努力解决这个问题,试图找到一个解决方案。

对于一个数字范围,例如 1-12 ,我想在该范围内生成一个随机序列, 包括 112

不过我不想重复数字

所以我想要这样的东西-3,1,8,6,5,4 ..依此类推,每个数字从1到12。

然后,我想将这些随机数放入,Array并使用该数组“随机”选择并在jsp页面上显示一些项目(例如从数据库中提取的清单)。

到目前为止,我尝试过的问题是,生成了很多 重复的 数字…或者,并非 所有 数字都被选中。

有解决这个问题的简单方法吗?


编辑

测试#1使用Collectionsshuffle()方法-

ArrayList<Integer> list = new ArrayList<Integer>(10);
for(int i = 0; i < 10; i++)
{
  list.add(i);
}
Collections.shuffle(list);

String[] randomNumbers = (String[])list.toArray();

for(int i = 0; i < 10; i++)
{
  out.print(randomNumbers[i]+"<br>");
}

结果是具有重复值的序列-
选择= 3
选择= 8
选择= 7
选择= 5
选择= 1
选择= 4
选择= 6
选择= 4
选择= 7
选择= 12

测试#2-使用随机数学课程

int max = 12;
int min = 1;

int randomNumber = 0;

String str_randomNumber = "";

for(int i=0; i<10; i++) {
    //int choice = 1 + Math.abs(rand.nextInt(11));
    int choice = min + (int)(Math.random() * ((max - min) + 1));

    out.print("chose = "+choice+"<br>");
}

结果就像使用Collections.shuffle()


阅读 317

收藏
2020-09-08

共1个答案

小编典典

您可以使用从1到12的所有值填充数组,然后将它们混排(请参阅例如为什么Collections.shuffle()对于我的数组失败?

2020-09-08