Java RNG检查是否存在重复

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

我能够从1-100的数组列表中生成5个随机数,但无法获取randomNumbers.removietem以防止重复条目。我添加了部分代码,以避免它过于庞大。有关如何避免重复数字的任何帮助或建议?

如果在添加数字之前检查了数字是否在随机枚举中,则无需删除该数字。

如果您只想避免重复:

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)