C#返回循环两次随机数



嘿,我试图从方法返回一个随机数。我的代码有效,它返回一个随机数,但问题在于,如果我在循环时使用两次使用它,它返回的数字与返回的数字相同,我该如何解决问题?如果问题解决了。

我的代码看起来像这样

 private int ReturnARandomNumber(int min, int max)
 {
    var randomNumber = new Random();
    return randomNumber.Next(min, max);
 }

-Morten Syhler

您应该移动声明:

var randomNumber = new Random();

从类范围的方法范围中出来:

var randomNumber = new Random();
private int ReturnARandomNumber(int min, int max)
{
    return randomNumber.Next(min, max);
}

不会每次创建新的随机对象。Random将当前时间用作默认种子,如果您经常在紧密的循环中调用该功能,则在后续调用中获得相同的种子价值。Random如果您在一段时间内重复使用相同对象,则效果最好:

private Random randomNumber = new Random();
private int ReturnARandomNumber(int min, int max)
{     
    return randomNumber.Next(min, max);
}

用于生成随机数的种子基于当前时间。在您的情况下,解决此问题的一种方法是让Random成为函数中的参数,以便您可以在循环外进行初始化。

最新更新