Java RNG检查是否存在重复
我能够从1-100的数组列表中生成5个随机数,但无法获取randomNumbers.removietem以防止重复条目。我添加了部分代码,以避免它过于庞大。有关如何避免重复数字的任何帮助或建议?如果在添加数字之前检查了数字是否在随机枚举中,则无需删除该数字。如果您只想避免重复:Java RNG检查是否存在重复,java,arrays,string,random,Java,Arrays,String,Random,我能够从1-100的数组列表中生成5个随机数,但无法获取randomNumbers.removietem以防止重复条目。我添加了部分代码,以避免它过于庞大。有关如何避免重复数字的任何帮助或建议?如果在添加数字之前检查了数字是否在随机枚举中,则无需删除该数字。如果您只想避免重复: for(int i=0;i<maxNumbers;i++) { int r = rgen.nextInt(100) + 1; if(randomNumbers.contain
for(int i=0;i<maxNumbers;i++)
{
int r = rgen.nextInt(100) + 1;
if(randomNumbers.contains(r))
{
randomNumbers.remove(r);
}
s += r + ",";
randomNumbers.add(String.valueOf(r));
}
int index = jList1.getSelectedIndex();
// check that selected item matches number generated
if(index >= 0)
{
// get selected item
String item = (String)jList1.getSelectedValue();
// check if this item in number list
if(randomNumbers.contains(item))
{
randomNumbers.remove(item);
}
但你可能想继续,直到它满了:
for(int i=0;i<maxNumbers;i++)
{
int r = rgen.nextInt(100) + 1;
if(!randomNumbers.contains(r))
{
randomNumbers.add(String.valueOf(r));
s += r + ",";
}
}
不确定您想对jList执行什么操作。在上面的代码中,不清楚您是在跟踪集合还是列表中的号码。你应该在一个集合中跟踪它们,然后生成一个随机数,直到找到一个不在你的集合中。完成后,进行所有必要的转换/格式化 您还可以预先填充一个列表,然后将其洗牌,最后使用前几个 在爪哇
int i=0;
while(i<maxNumbers)
{
int r = rgen.nextInt(100) + 1;
if(!randomNumbers.contains(r))
{
randomNumbers.add(String.valueOf(r));
s += r + ",";
i++;
}
}
这不是最有效的方法,但它会工作得很好,而且不太容易出错。项的定义位置和方式?我在代码中添加了项。我尝试以这种方式检查它,但在int i=0时“code”无效;如果randomNumbers包含r,您不需要删除它,只需再次添加它;不要管随机数,因为你没有添加新的数字,所以减少i,并保持循环。
public static List<Integer> randomNumbers(int n, int take) {
ArrayList<Integer> al = new ArrayList<>();
for (int c = 0; c < n; ++c) {
al.add(c);
}
Collections.shuffle(al);
return al.subList(0, take);
}
user=> (->> (range 1 101) shuffle (take 5))
(40 23 32 12 72)