list集合装产生的随机数,再循环集合里的数,如果重复,则产生下一个随机数,当集合数字为6个则跳出

解决方案 »

  1.   

                IEnumerable<int> six = Enumerable.Range(1, 32).OrderBy(x => Guid.NewGuid()).Take(6);
                int one = Enumerable.Range(1, 32).Where(x => !six.Contains(x)).OrderBy(x => Guid.NewGuid()).First();
      

  2.   


     int one = Enumerable.Range(1, 12).Where(x => !six.Contains(x)).OrderBy(x => Guid.NewGuid()).First();
      

  3.   


     int one = Enumerable.Range(1, 12).Where(x => !six.Contains(x)).OrderBy(x => Guid.NewGuid()).First();第一个32->33,还是被发现了
    没买过彩票~
      

  4.   

    两种做法,
    1.假设你现在有1个数组A,里面装的是随机抽取的结果
    每次随机出一个数,先遍历一下A,看有没有,有就取这个数+1,再重复判断有没有,有就再+1,直到>33则从1再判断,直到6次都没找到就可以结束了(反正A里最多就6个数)
    2.定义个list或者arraylist A,数组B
    A里放1-33,B是结果
    第1次取值范围0-32,第2次取0-31,以后每次取值比前一次减1
    取到的数并不是最终你要的数,而是A的索引,对应这个位置的数才是你要的数,这个是可以一次性取出不重复的数,不必再去遍历判断了.
      

  5.   

    哦,忘记说,方法2里,每次取到数后,要将list里响应项remove掉,这样保证再也取不到相同的数了
      

  6.   


    var red = string.Join("-", Enumerable.Range(1, 33).OrderBy(x => Guid.NewGuid()).Take(6).Select(d => d.ToString()).ToArray());
    var blue = string.Join("-", Enumerable.Range(1, 16).OrderBy(x => Guid.NewGuid()).Take(1).Select(d => d.ToString()).ToArray());
    MessageBox.Show("本期开奖结果如下红球="+red+"篮球="+blue);
      

  7.   


    我只是链接的搬运工
    http://bbs.csdn.net/topics/390780596