听起来很简单…但是我一直在努力解决这个问题,试图找到一个解决方案。
对于一个数字范围,例如 1-12 ,我想在该范围内生成一个随机序列, 并 包括 1 和 12 。
不过我不想重复数字 。
所以我想要这样的东西-3,1,8,6,5,4 ..依此类推,每个数字从1到12。
然后,我想将这些随机数放入,Array
并使用该数组“随机”选择并在jsp页面上显示一些项目(例如从数据库中提取的清单)。
到目前为止,我尝试过的问题是,生成了很多 重复的 数字…或者,并非 所有 数字都被选中。
有解决这个问题的简单方法吗?
测试#1使用Collections
和shuffle()
方法-
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()
。
您可以使用从1到12的所有值填充数组,然后将它们混排(请参阅例如为什么Collections.shuffle()对于我的数组失败?)
问题内容: Python中是否有一种简单的方法可以生成一个范围内的随机数,但不包括该范围内的某些数字子集? 例如,我知道您可以使用以下方法生成0到9之间的随机数: 如果我有一个清单,例如不想退回该怎么办? 问题答案: 尝试这个:
本文向大家介绍java随机抽取指定范围不重复的数字,包括了java随机抽取指定范围不重复的数字的使用技巧和注意事项,需要的朋友参考一下 本文给大家介绍如何在JAVA中实现随机无重复数字的功能。如果您是初学者的话,有必要看一看这篇文章,因为这个功能一般会在面试中遇到。包括我本人在招聘人员的时候也喜欢拿这个问题去问别人,主要看一看考虑问题的模式和基础知识如何。 希望这篇文章能给初次接触的朋友一些帮助,
我目前正在创建一个应用程序,它将生成随机数。所以每次它都会生成三个数字num1、num2和num3。这些数字不应该重复。例如,如果num1=1,则num2和num3不能等于1。我尝试过此代码,它将显示0-2之间的三个不同数字。然而,我想生成1-3、2-4、3-5等范围内的随机数。因此,我如何通过使用下面的代码来实现这一点。请帮帮我,因为我是新手。非常感谢。
本文向大家介绍C#生成指定范围内的不重复随机数,包括了C#生成指定范围内的不重复随机数的使用技巧和注意事项,需要的朋友参考一下 C#生成指定范围内的不重复随机数 下面来介绍下其他网友的实现方法: 方法1:思想是用一个数组来保存索引号,先随机生成一个数组位置,然后把随机抽取到的位置的索引号取出来,并把最后一个索引号复制到当前的数组位置,然后使随机数的上限减一,具体如:先把这100个数放在一个数组内,
问题内容: 如何生成int特定范围内的随机值? 我尝试了以下方法,但是这些方法不起作用: 尝试1: 尝试2: 问题答案: 在Java 1.7或更高版本中,执行此操作的标准方法如下: 请参阅相关的JavaDoc。这种方法的优点是不需要显式初始化java.util.Random实例,如果使用不当,可能会引起混乱和错误。 但是,相反,没有办法显式设置种子,因此在测试或保存游戏状态或类似情况有用的情况下,
本文向大家介绍Java 生成给定范围内的随机数,包括了Java 生成给定范围内的随机数的使用技巧和注意事项,需要的朋友参考一下 为了生成给定范围内的随机数,Java代码如下- 示例 输出结果 名为Demo的类包含主要功能。在这里,将创建一个新的随机实例以及一个新的数组列表。创建随机元素并将其分配给变量。使用add函数将这些随机变量添加到列表中。这些元素显示在控制台上。