我正在调用一个名为buy的方法实例。我的方法随机生成一串数字和数字。我的for循环似乎要快速更改字符串的方法因为我在获取新字符串之前连续2-3次获得相同的字符串。当我添加System.Threading.Thread.Sleep(100);我得到的随机数就像它应该的那样。问题是它太慢了,我觉得必须有更好的方法。有没有办法在不调用Sleep()方法的情况下每次获取随机字符串?
for (int i = 0; i < exit; i++)
{
ticket = buy.SetNum();
Console.WriteLine("Wellcome Mr.Nissan. The winning numbers for Lotto max are:");
Console.WriteLine(ticket);
System.Threading.Thread.Sleep(25);
}
答案 0 :(得分:4)
是的,这是您的随机数生成器的问题 - 而不是您在问题中发布的代码。
考虑以下事项:
public int GenRandomNum()
{
var r = new Random();
return r.Next()
}
如果您在相同的刻度中调用它,则基于相同的种子生成新的随机类,并且它将生成相同的数字。移动方法的随机初始化方法将解决问题,如下所示:
private Random _rand = new Random();
public int GenRandomNum()
{
return _rand .Next()
}
答案 1 :(得分:2)
您没有包含实际创建随机数的代码,但我怀疑您每次在循环周围创建一个新的随机数生成器实例。
您需要做的是创建随机数生成器的一个实例(在循环之外)并将其重用于每个随机数生成器.Next()调用。
答案 2 :(得分:0)
将随机数生成移动到循环中:
var rnd = new Random();
for (int i = 0; i < exit; i++)
{
var ticket = rnd.Next();
Console.WriteLine("Wellcome Mr.Nissan. The winning numbers for Lotto max are:");
Console.WriteLine(ticket);
}
我无法告诉您为什么在没有看到buy.SetNum();
方法代码的情况下,您发布的代码无法正常工作。