首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java 如何生成随机范围的特定数字而不重复这些数字?

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

Stack Overflow用户
提问于 2018-12-05 02:28:16
回答 2查看 0关注 0票数 0

听起来很简单......但我一直在试图找到这一点,试图找到所有解决方案。

对于一系列数字,比如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()

EN

回答 2

Stack Overflow用户

发布于 2018-12-05 10:53:53

您可以将所有数字从1到12依次放入数组中,然后使用一些随机算法来随机化它们的顺序。

票数 0
EN

Stack Overflow用户

发布于 2018-12-05 11:36:34

随机数生成允许重复。如果你想要一系列无重复的随机数,我建议如下:

  1. 生成一个随机数(我将引用一个数字X)。
  2. 添加到Set对象。
  3. 检查Set对象的大小,如果是所需的大小,则完成。如果它小于所需的大小,请转到步骤1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档