在我的程序中,我有以下两个类的代码:
Random Rand = new Random ();
_x = (Rand.Next (0, 31));
_y = (Rand.Next (0, 23));
问题出在程序运行时。这两个类都生成完全相同的数字。我怎样才能以两种坐标(_x& _y)生成不同的方式对其进行编码,这样我可以有两个不同的坐标?
我在Xamarin Studio中使用C#。
答案 0 :(得分:0)
您需要确保使用Random
的不同种子实例化这两个类。如果两个类紧密地实例化,那么时钟可能没有移动到下一个tick并且它们都获得相同的种子。你需要确保这两个类得到不同的种子。
执行此操作的一种方法是使用主Random
为其他两个实例生成种子:
Random masterRandom = new Random((int)DateTime.Now.Ticks);
Random r1 = new Random(masterRandom.Next(0, 100000));
Random r2 = new Random(masterRandom.Next(0, 100000));
因为时钟只调用一次,所以两个调用紧密相连没有问题。 Random
的其他实例从masterRandom
获取种子,而不是时钟。