C#在while循环中返回两次随机数

时间:2017-05-30 20:25:37

标签: c# random

嘿我试图从方法中返回一个随机数。我的代码工作,它返回一个随机数,但问题是它返回相同的数字,如果我在同一个while循环中使用它两次,我该如何解决问题?如果问题得到解决。

我的代码看起来像这样

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

- Morten syhler

3 个答案:

答案 0 :(得分:2)

您应该移动声明:

var randomNumber = new Random();

从方法范围到类范围:

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

答案 1 :(得分:1)

每次都不要创建新的Random对象。 Random使用当前时间作为默认种子,如果您经常在紧密循环中调用该函数,则在后续调用中获取相同的种子值。如果您在一段时间内重复使用同一个对象,Random效果最佳:

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

答案 2 :(得分:-1)

用于生成随机数的种子基于当前时间。在你的情况下,一种方法是让Random成为函数中的参数,这样你就可以在循环之外初始化它。