只有在不存在的情况下,才会在循环中添加随机数

时间:2015-10-27 22:59:33

标签: c# list loops random

使用列表的新功能。出于自动测试目的,我生成一个不同值的列表。以下是一个值得关注的代码块:

Random rnd = new Random();
List<int> lVars = new List<int>();

        while (VarsCount < randVarsCount)
        {
            if(VarsCount > 0)
            {
                while(lVars.Distinct().Count() != lVars.Count()) 
                {
                    lRowVars.Insert(VarsCount, rnd.Next(1, 11)); //problem code 
                }
            }
            lVars.Add(rnd.Next(1, 11));
            MessageBox.Show(lRowVars[aRowVarsCounter].ToString());
            aRowVarsCounter++;
        }

基本上,我如何检查添加的int是否与列表的所有内容匹配(因为我的代码不起作用)....我已经尝试了其他一些代码,但最终还是ALOT额外的代码和循环;通常当我觉得我做了多余的事情时,我发现有一种更简单的方法。

1 个答案:

答案 0 :(得分:2)

在思考&#34;列出不同的值&#34;时,请考虑&#34;设置&#34;相反,如果你不关心订购(这里似乎是这种情况)。集合最多只包含一次给定值。你可以做点什么

int maxRnd = 11;
int desiredCount = 4;
if (desiredCount > maxRnd) throw new Exception("Impossible.");

HashSet<int> unique = new HashSet<int>();
while (unique.Count < desiredCount)
{
    unique.Add(rnd.Next(1, maxRnd));
}

// If needed, convert to a list

var uniqueList = unique.ToList();