在同一个页面里我要用到多个随机数字
于是写了个方法
public static string GetRandom(int len)
{
            
     StringBuilder strbu = new StringBuilder();
     for (int i = 0; i < len; i++)
     {
         strbu.Append((new Random()).Next(10));
     }
     return strbu.ToString();
}
但是在同一个页面调用时,得到的随机数是完全一样的,为什么会这样呢?
顺便说一下,本来是做文件上传,用的是时间,但得到的时间有时是一样,就想到用随机数,哪知道,几次产生随机数也是一样的

解决方案 »

  1.   

    试试下面这个方法。
    DateTime date = DateTime.Now;
    Random ran = new Random( date.Ticks );
    strbu.Append(ran.Next(10));
      

  2.   

    (new DateTime()).Ticks
    返回的是0
      

  3.   

    DateTime date = DateTime.Now;
    Random ran = new Random( date.Ticks );
    strbu.Append(ran.Next(10));UP
      

  4.   

    date.Ticks 返回的是long
    new Random()没有这样的一个重载
      

  5.   

    StringBuilder strbu = new StringBuilder();            DateTime date = DateTime.Now;
                Random ran = new Random((int)date.Ticks);
                strbu.Append(ran.Next(10));            Console.WriteLine(strbu.ToString());
      

  6.   

    to:JustLovePro(嘉鑫) 
    没用的,我这样调用
    Response.Write( Common.Tool.GetRandom(7)+"<br>");
    Response.Write(Common.Tool.GetRandom(7) + "<br>");
    Response.Write(Common.Tool.GetRandom(7) + "<br>");
    Response.Write(Common.Tool.GetRandom(7) + "<br>");
    出来的是:
    4444444
    4444444
    4444444
    4444444
      

  7.   

    不嫌麻烦就用 跳蚤算法 (提供者  kitygirl)
    http://blog.csdn.net/kitegirl/archive/2007/06/26/1666449.aspx
      

  8.   

    Random rdn = new Random(7);
    for(int i = 0; i< 10; i++)
    {
    this.textBox1.Text += rdn.Next(7).ToString() + "\n";
    }要用一个种子。
      

  9.   

    to:Aallonlin(风之力)明白你的意思了,我改下程序
            public string GetRandom(int len)
            {
                
                StringBuilder strbu = new StringBuilder();
                Random random = new Random();
                for (int i = 0; i < len; i++)
                { 
                    strbu.Append(random.Next(10));
                }
                return strbu.ToString();
            }
    但我几次调用这个方法的结果还是一样的,只是结果内的数字不一样
    我只是想几次调用产生的结果不一样
      

  10.   

    不能用random ,用另一个随机函数 ,我不知道怎么写了
      

  11.   

    // 这里的Base可以看成是你需要的所有字母、符号、数字的一个集合。public string GetRandom(string Base, int Length)
    {
    string RandomStr = "";
    Random rand = new Random();
    while (RandomStr.Length < StrLength)
    {
    RandomStr = RandomStr + Base[rand.Next(Base.Length)];
    }
    return RandomStr;
    }public string GetRandom(int Length)
    {
    return GetRandom("0123456789",Length);
    }
      

  12.   

    Random random = new Random();      
      
            public string GetRandom(int len)
            {
                
                StringBuilder strbu = new StringBuilder();
                
                for (int i = 0; i < len; i++)
                { 
                    strbu.Append(random.Next(10));
                }
                return strbu.ToString();
            }
    把random设置为对象属性。
      

  13.   

    谢谢各位,我把random设置成属性就行了。
    就是说同一个页面调用的是同一个种子
      

  14.   

    public static string GetRandom(int len)
    {
                
         StringBuilder strbu = new StringBuilder();
         Random r = new Random();
         for (int i = 0; i < len; i++)
         {
             strbu.Append(r.Next(10));
         }
         return strbu.ToString();
    }