【发布时间】:2010-10-30 22:31:24
【问题描述】:
我需要一个 C# 的 Random 类实例的种子,并且我了解到大多数人为此使用当前时间的刻度计数器。但这是一个 64 位的值,种子需要是一个 32 位的值。现在我认为返回int 的GetHashCode() 方法应该为其对象提供合理分布的值,这可以用来避免仅使用滴答计数的低32 位。但是,我找不到有关 Int64 数据类型的 GetHashCode() 的任何信息。
所以,我知道这无关紧要,但下面的工作是否会像我想的一样好(我不能试错随机性),或者它可能与使用 (int)DateTime.Now.Ticks 作为种子?或者它甚至可能更糟糕?谁能解释一下。
int seed = unchecked(DateTime.Now.Ticks.GetHashCode());
Random r = new Random(seed);
编辑:为什么我需要一个种子而不是让Random() 构造函数来完成工作?我需要将种子发送给对相同随机序列使用相同种子的其他客户端。
【问题讨论】:
-
你忘记写出你需要种子的非常好的论据。
-
好吧,我现在补充说非常好的论据。 :)
标签: c# random gethashcode