我需要一个 C#Random
类实例的种子,并且我读到大多数人为此使用当前时间的滴答计数器。但这是一个 64 位的值,种子需要是一个 32 位的值。现在我认为GetHashCode()
返回 an 的方法int
应该为其对象提供合理分布的值,这可以用来避免仅使用滴答计数的低 32 位。但是,我找不到有关Int64
数据类型的 GetHashCode() 的任何信息。
所以,我知道这并不重要,但以下工作会像我想的那样好(我不能试错随机性),或者它可能与使用(int)DateTime.Now.Ticks
种子一样工作?或者它甚至可能更糟糕?谁能对此有所了解。
int seed = unchecked(DateTime.Now.Ticks.GetHashCode());
Random r = new Random(seed);
编辑:为什么我需要种子而不是让Random()
构造函数完成工作?我需要将种子发送给对相同随机序列使用相同种子的其他客户端。