我希望我能清楚地解决问题,感谢你的时间。
在我的控制台程序中,它每行打印2个变量双随机和一个String,我重复随机逻辑并再次重新打印,我创建3张卡,但在“Card card2 = new Card”之前,这保存了Atkk,Def, Tipe,在一个字符串中,引用这些值所属的Card,以及Main中的3个打印。但是当使用开始按钮运行它时,它总是打印如下:
Atakk:2.33 , Def: 4.66, Tipe: Fire
Atakk:2.33 , Def: 4.66, Tipe: Fire
Atakk:2.33 , Def: 4.66, Tipe: Fire
是的,当我关闭它并再次尝试时它总是一样的,显然值会改变,但同样的事情重复3次......
然后我一步一步地运行了4次(F11),结果总是变化很大:
Atakk:1.33 , Def: 5.10, Tipe: Fire
Atakk:4.64 , Def: 8.69, Tipe: Water
Atakk:0.17 , Def: 9.20, Tipe: Land
有人遇到同样的问题,因为这样的事情是这样的吗?
这是一个猜测,但我怀疑这与你初始化你的new Random()
的方式有关。
它应该做一次,而不是循环。
如 蝙蝠侠 @John说请查看Random number generator only generating one random number
因为随机分类是基于时钟初始化的,所以有时你会遇到相同的数字。解决方案是你应该保留相同的Random实例并在同一个Random实例上调用Next()来生成你的数字:
private static readonly Random Random = new Random();
private static readonly object SyncLock = new object();
public static int GenerateRandomNumber(int min, int max)
{
lock (SyncLock)
{
return Random.Next(min, max);
}
}
P / S:这只是一个例子。在源代码中,您可以定义单个类或其他东西以获得更好的设计。
快乐的编码!