簡體   English   中英

每個.Next()調用隨機數[方法中的多個.Next()]

[英]Random numbers every .Next() call [ Multiple .Next() in method]

我在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()調用中都沒有獲得新值?

謝謝

再見!

Random.Next(0, 1)將始終返回0 最大值是排他的。

由於鴿洞原理,很難:)在[0-4)的范圍內獲得5個不同的整數值。

由於數字是隨機的,因此您應該期望在某些情況下所有值都相同。

(除了@IngisKahn標識的使用Random.Next(0,1) bug之外)

試試看

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM