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设置为对象属性。