StringBuilder sb = new StringBuilder();for (int i = 0; i < 3; i++)
{
sb.Append(tb.GetRNDDh() + "<br/>");
}
Label1.Text =sb.ToString();代码如上,循环中的tb.GetRNDDh() 方法返回一个包含不同的随机数字符串,如果打断点执行的话,3次循环返回的结果是不一样的,如下
31 26 13 21 11 32
17 06 02 26 10 30
12 07 03 27 29 16 如果不打断点执行,3次循环返回的结果是一样的,如下
15 32 02 10 18 33
15 32 02 10 18 33
15 32 02 10 18 33 请问这是怎么回事?
{
sb.Append(tb.GetRNDDh() + "<br/>");
}
Label1.Text =sb.ToString();代码如上,循环中的tb.GetRNDDh() 方法返回一个包含不同的随机数字符串,如果打断点执行的话,3次循环返回的结果是不一样的,如下
31 26 13 21 11 32
17 06 02 26 10 30
12 07 03 27 29 16 如果不打断点执行,3次循环返回的结果是一样的,如下
15 32 02 10 18 33
15 32 02 10 18 33
15 32 02 10 18 33 请问这是怎么回事?
打断点之后时间错动了所以结果变了.
public string GetRNDDh()
{
string dh = "";
Random rnd = new Random();
int i = 0;
while (i < 6)
{
int num = rnd.Next(1, 34); //返回1-33之间的一个随机整数
string strnum = "";
if (num < 10)
strnum = "0" + num.ToString();
else
strnum = num.ToString();
if (dh.IndexOf(strnum) != -1)
{
continue; //有重复号码,退出本次循环
}
else
{
dh = dh + strnum + " ";
i++;
}
}
return dh.Trim();
}
//using System.Threading;
Thread.Sleep(5);
解决方法就是 Random 的参考值(种子值)设置唯一值即 Guid 就可以了Random random = new Random(Guid.NewGuid().GetHashCode());