日期:2014-05-19  浏览次数:20965 次

c#随机数问题
在同一个页面里我要用到多个随机数字
于是写了个方法
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();
}
但是在同一个页面调用时,得到的随机数是完全一样的,为什么会这样呢?
顺便说一下,本来是做文件上传,用的是时间,但得到的时间有时是一样,就想到用随机数,哪知道,几次产生随机数也是一样的

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

------解决方案--------------------
DateTime date = DateTime.Now;
Random ran = new Random( date.Ticks );
strbu.Append(ran.Next(10));

UP
------解决方案--------------------
StringBuilder strbu = new StringBuilder();

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

Console.WriteLine(strbu.ToString());
------解决方案--------------------
不嫌麻烦就用 跳蚤算法 (提供者 kitygirl)
http://blog.csdn.net/kitegirl/archive/2007/06/26/1666449.aspx
------解决方案--------------------
Random rdn = new Random(7);
for(int i = 0; i < 10; i++)
{
this.textBox1.Text += rdn.Next(7).ToString() + "\n ";
}

要用一个种子。
------解决方案--------------------
不能用random ,用另一个随机函数 ,我不知道怎么写了
------解决方案--------------------
RNGCryptoServiceProvider
------解决方案--------------------
new Random().Next(0,100000);
------解决方案--------------------
// 这里的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);
}
------解决方案--------------------
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设置为对象属性。