用于生成无重复的随机数数组的函数[重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我正在创建一个函数来生成一个随机数组而不是重复数字。我做错了什么?

使用此代码,函数填充数组重复一些数字。

for(int i=0;i<n;i++)
        {
          numero = random.nextInt(delta) + da;
          for(int j=0;j<n;j++)
          {
            if(numero==estratti[j])
            {
              numero = random.nextInt(delta) + da;
              j=0;
            }        
          }
          estratti[i] = numero;
        }
java arrays random
2个回答
2
投票

如果你随机滚动一个重复的数字,然后滚动一个新的数字,并随机滚动estratti[0]似乎会出现问题。当您找到重复时设置j=0,但下次检查numero==estratti[j]是否在循环的下一次迭代中。到那时,j已经增加了j++1,因此你错过了这个案例。

要修复它,如果找到重复的数字,可以设置j = -1


0
投票

您应该利用一个hashset结构并执行类似这个未经测试的java代码:

HashSet set = new LinkedHashSet();
while (set.size() < n) {
    set.add(random.nextInt(delta));
}
return set.toArray();

如果已经存在,HashSet.add method将不会添加值。

根据您的情况调整该代码。

© www.soinside.com 2019 - 2024. All rights reserved.