随机数每个.Next()调用[方法中的多个.Next()]

时间:2012-06-13 16:52:17

标签: c#

我在C#中生成随机数有问题

我已经尝试过我找到的所有解决方案。大多数我们每次只使用相同的随机对象,它只对每个对象起作用,而不是每个属性。

所以我使用它作为随机数的代码:

private static readonly Random random = new Random();
private static readonly object syncLock = new object();

public static int RandomNumber(int min, int max)
{
            lock (syncLock)
            { // synchronize
                return random.Next(min, max);
            }
}

现在我想在同一个方法中多次调用.Next(),以生成一个随机对象:

public void StartDuiven()
{
   for (int i = 0; i <= 6; i++)
   {
      var d = new Duif();
      d.Naam = /*NameGenerator.GenRandomFirstName() +" "+ NameGenerator.GenRandomLastName()*/ "Jantje";
      d.GeboorteDatum = DateTime.Now;
      d.Snelheid = Genrator.RandomNumber(0, 4);
      d.Vliegtechniek = Genrator.RandomNumber(0, 4);
      d.Vormpeil = Genrator.RandomNumber(0, 4);
      d.Conditie = Genrator.RandomNumber(0, 4);
      d.Aerodynamica = Genrator.RandomNumber(0, 4);
      d.Intelligentie = Genrator.RandomNumber(0, 4);
      d.Libido = Genrator.RandomNumber(0, 4);
      d.Nachtvliegen = Genrator.RandomNumber(0, 4);
      d.Navigatie = Genrator.RandomNumber(0, 4);
      d.Ervaring = Genrator.RandomNumber(0, 4);
      d.Transfer = false;

      int g = Genrator.RandomNumber(0, 2); // Edited

      if (g == 0)
         d.Geslacht = false;
      else
         d.Geslacht = true;

      AddDuif(d);
   }
}

每个新对象我得到一个不同的数字,但不是每次我打电话。Next()方法。

因此,对于1个对象,属性的所有值都相同。

我该如何解决这个问题?为什么我没有在每个.Next()电话上获得新值?

谢谢

再见!

3 个答案:

答案 0 :(得分:4)

Random.Next(0, 1)将始终返回0。最大值是独家的。

答案 1 :(得分:2)

由于鸽子原理,很难在[0-4]范围内得到5个不同的整数值。

由于数字是随机的,所以当所有值都相同时,你会发现会有一些情况。

(除了@IngisKahn使用Random.Next(0,1)确定的错误)

答案 2 :(得分:0)

尝试

return (random.Next() % (max - min)) + min