ArrayList chanshengxuhao;//随机产生序号
 Random suijixulie = new Random();//产生的随机序列
 chanshengxuhao = new ArrayList(5);
                for (int i = 0; i < yaohaorenshu; i++)
                {
                    chanshengxuhao.Add(suijixulie.Next(1,6)); 
                }
                foreach (var item in chanshengxuhao)
                {
                    this.txtNumber.Text += item.ToString() + "  ";
                }
这样每次随机出来的数据有重复的,怎么避免呢,谢谢!
比如出来就是下面的数据
3  5  1  3  3  random

解决方案 »

  1.   

    this.txtNumber.Text = string.Join(" ", Enumerable.Range(1, 5).OrderBy(x => Guid.NewGuid().ToString()).Select(x => x.ToString()).ToArray());
      

  2.   

    int[] rs = Enumerable.Range(1, 5).OrderBy(x => Guid.NewGuid()).ToArray();
    foreach (int r in rs)
    Console.WriteLine(r);
      

  3.   

    Random.Next返回的是整数,1~6数字太少,重复的可能性就大了,你生成6个以上数字必定有至少一对重复,你可以用Random.NextDouble可以返回浮点数,重复可能性不大,
      

  4.   

                Enumerable.Range(1, 5).OrderBy(t => Guid.NewGuid()).ToList().ForEach(t => Console.WriteLine(t));
      

  5.   

    ArrayList chanshengxuhao;//随机产生序号
     Random suijixulie = new Random();//产生的随机序列
     chanshengxuhao = new ArrayList(5);
                    for (int i = 0; i < yaohaorenshu; )
                    {
                        int ran = suijixulie.Next(1,6);
                        if(chanshengxuhao.Contains(ran)
                        {
                             continue;
                        }
                        chanshengxuhao.Add(ran ); 
                        i++;
                    }
                    foreach (var item in chanshengxuhao)
                    {
                        this.txtNumber.Text += item.ToString() + "  ";
                    }
      

  6.   


                var list = Enumerable.Range(1, 500).OrderBy(t => Guid.NewGuid()).Select((t, index) => new { value = t, index = index }).GroupBy(t => t.index / 50).Select(t => t.Select(tt => tt.value).ToList()).ToList();
      

  7.   

    我修改成这样:this.txtNumber.Text = string.Join(" ", Enumerable.Range(1, 500).OrderBy(t => Guid.NewGuid().ToString()).Select((t, index) => new { value = t, index = index }).GroupBy(t => t.index / 50).Select(t => t.Select(tt => tt.value).ToString()).ToArray());
    怎么不行呢?谢谢
      

  8.   

    那个list是List<List<int>>,一共十组,每组50个数