我在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()
电话上获得新值?
谢谢
再见!
答案 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