我想一次随即出多个不同的随机数
但是因为种子问题没有实现
         string a="";
            for (int i = 0; i < 10; i++)
            {
                int seekSeek = unchecked((int)DateTime.Now.Ticks);
                Random seekRand = new Random(seekSeek);                string temp = seekRand.Next(1000).ToString();
                a += temp + "_";
            }
            this.TextBox1.Text = a;这样不行啊!
各位有没有简洁一点的生成办法

解决方案 »

  1.   

    unchecked关键字。很少有人用到。赞一个。不过这里不会溢出吧。呵呵。
    你next的时候指定个最小值试试。
      

  2.   

      string a="";
      for (int i = 0; i < 10; i++)
      {
      int seekSeek = unchecked((int)DateTime.Now.Ticks);
      Random seekRand = new Random(seekSeek);  string temp = seekRand.Next(seekSeek).ToString();
      a += temp + "_";
      }
      this.TextBox1.Text = a;我看了文章了 我觉得加上红字的就应该好用了
    结果还是不行啊?
      

  3.   

    private void button1_Click(object sender, EventArgs e)
    {
        string a = "";
        List<int> get_ints = new List<int>();
        Random seekRand = new Random(new Guid().GetHashCode());
        for (int i = 0; i < 10; i++)
        {
            //int seekSeek = unchecked((int)DateTime.Now.Ticks);//你想想,循环要多块啊。你实际每一次得到的tick都是一样的,用同一个种子随机出来的,得到的第一次结果当然一样了。
            //Random seekRand = new Random(seekSeek);//这里要不得,每次new很慢的,一次十几K内存啊。
            int n = seekRand.Next(0, 1000);
            while (get_ints.Contains(n)) n = seekRand.Next(0, 1000);//一直获取,重复的就再次获取。
            get_ints.Add(n);
            textBox1.AppendText(n.ToString("000") + "_");
        }
        this.textBox2.Text = a;
    }
      

  4.   

    楼主。你头像是谁啊。记得以后升星的时候要感谢jpav.
      

  5.   


     string a = "";
                ArrayList list = new ArrayList(10);
                while(list.Count<10)
                {
                    int seekSeek = unchecked((int)DateTime.Now.Millisecond);
                    Random seekRand = new Random(seekSeek);                string temp = seekRand.Next(0,1000).ToString();
                    
                    if (!list.Contains(temp))
                    {
                        list.Add(temp);
                        a += temp + "_";
                        Console.WriteLine(a);
                    }
                    
                }
      

  6.   

    随机类Random只需要一个,不应该放到循环里,在循环里,时间很快,随机种子是相同的,所以都一样。            string a = "";                int seekSeek = unchecked((int)DateTime.Now.Ticks);
                    Random seekRand = new Random(seekSeek);
                for (int i = 0; i < 10; i++)
                {
                    string temp = seekRand.Next(1000).ToString();
                    a += temp + "_";
                }
                this.TextBox1.Text = a;
      

  7.   

    不懂seed就随便写一个
                System.Random rnd = new System.Random();
                IEnumerable<int> numbers = Enumerable.Range(1, 1000).OrderBy(r => rnd.Next()).Take(10);
                List<int> nums = numbers.ToList();
      

  8.   

    seekRand 在循环体内,很容易造成随机种子重复,temp值当然也会重复。
    将Random seekRand 作为类的字段定义不会有频繁重复的现象。
      

  9.   

    11楼lon123的方法效率最高,代码最简洁。
      

  10.   

    多谢逍遥兄夸奖 :), 我就是还没搞清楚情况就瞎掰,搂主应该可以自己搞定seed的问题吧,呵呵