日期:2014-05-20  浏览次数:21056 次

C#判断一个数组中(int型)有没有重复的值,并对它重新赋值
如题,int [] arrayA=new int [10],现利用for循环分别对数组中的元素,按索引顺序附上随机的值。赋值完毕后,现在是arrayA中10个元素都有值,先:反复查找有重复值的元素并对其中一个赋新的随机值,最后使得十个元素的值都不相同。
怎么办?或者说,取十个不同的随机值(Next(1,10)),貌似有点难啊。。
------解决方案--------------------
你换个思路,先把1..10依次赋值到数组中。然后用随机交换顺序把它们的顺序打乱。
就好象洗牌一样。
这才是唯一正确的方法。
------解决方案--------------------
如果不考虑性能的话:

int value;
var values = new List<int>();
Random random = new Random();
for(int i = 0; i < 10; i++)
{
    do
    {                    
        value = random.Next(1, 11);
    }while(values.Contains(value));
    values.Add(value);
}
MessageBox.Show(String.Join(",", values));
------解决方案--------------------
直接抽取不同岂不更好,参考:

http://www.cnblogs.com/rwecho/archive/2011/09/09/2172541.html