【发布时间】:2010-09-22 16:08:28
【问题描述】:
我正在寻找一个随机数,它总是为给定的种子生成相同的“随机”数。种子由 x + (y 定义,其中 x 和 y 是高度图上的位置。
我可以每次使用我的种子创建一个新的 System.Random 实例,但这会带来很大的 GC 压力。特别是因为这会被调用很多次。
编辑: “很多”意味着一百万次。
感谢所有回答的人!我知道我不清楚,但我在这里了解到哈希函数正是我想要的。
【问题讨论】:
-
这不是很随机,是吗?
-
你会有多少种不同的组合?您可以将 Random 实例存储在以种子为键的字典中重复使用。
-
正如您所指出的,
System.Random已经为给定的种子生成了相同的序列。您是否正在寻找具有 mutable 种子的 RNG,以便您可以简单地“重置”它?多少次是“很多”次,您是否对此进行了分析以查看它是否真的会导致较差的 GC 性能? -
@driis:这行不通,因为一旦在其中一个实例上调用
Next,种子就会改变。 -
完全正确,如果您只希望每个种子的 一个 值而不是序列,那么它根本不是真正的随机(甚至是伪随机),您可能会很好地使用其他一些函数,比如哈希码。事实上,重读这个问题,我有一个明显的印象,这个问题试图重新发明哈希码。