[英]Do all the numbers have equal probability to be returned on every Random.Next() call?
[英]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.