C#编程-写一个猜字的小程序的问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 02:15:42
昨晚写一个猜字的程序.发现一个问题...
string countStr = "";
for(int i=0;i<4;i++)
{
string Str = new random().next(1,9).ToString();
countStr = countStr + Str;
MessageBox(countStr...后面略);
}
MessageBox(countStr..后面略)
如果把第一个MessageBox注识到.会弹出四个一样的数字.
如果把第一个MessageBox要起的话.就会弹出四个不一样的数字.为什么?

这是当然的啊,这是一个伪随机数的问题了,因为随机数的产生是根系统的时间有关,在这么短的时间内,当然是一样的结果,当你用MessageBox弹出的时候,系统又过了一小段时间,所以出现了不同的随机数。

给你说个很简单的解决方法:
string countStr = "";
string last="";
string Str;
for(int i=0;i<4;i++)
{
do
{
Str = new Random().Next(1, 9).ToString();
} while (Str == last);
countStr = countStr + Str;
last = Str;
}
MessageBox.Show(countStr);

这个程序是没有错误的。
第一个注释掉不会出现一样的错误。
经过了.net2005C#的测试。没有发现你所说的问题