3 回答
TA贡献1815条经验 获得超6个赞
首先:你为什么要使用'break;' ?
第二:在第一个 for - 循环中,您为 x[i] 分配了一个随机数,但是在嵌套的第二个循环中,您已经要求 x[j] 检查相同的值(但尚不存在)
有很多方法可以检查值是否相等,但我喜欢你的方法:所以我建议:
做一个 for - 循环并将所有随机数分配给 int[] x
然后再想一想如何评估 x[0] = x[1] 或 x[2] 或 x[3] ...
TA贡献1797条经验 获得超4个赞
我认为这将是最容易理解的解决方案,无需复杂的扩展方法:
int[] x = new int[20];
// there can be at most 10 duplicates in array of length of 20 :)
// you could use List<int> to easily add elements
int[] y = new int[10];
int counter = 0;
Random rnd = new Random();
// fill the array
for (int i = 0; i < x.Length; i++)
x[i] = rnd.Next(1, 15);
// iterate through distinct elements,
// otherwise, we would add multiple times duplicates
foreach (int i in x.Distinct())
// if the count of an elements is greater than one, then we have duplicate
if(x.Count(n => n == i) > 1)
{
y[counter] = i;
counter++;
}
- 3 回答
- 0 关注
- 175 浏览
添加回答
举报