【发布时间】:2010-05-25 11:50:00
【问题描述】:
我需要知道不同平台对System.Random 对象(Silverlight)的影响。在 Mac、PC 和 32 / 64 位上创建的序列是否相同?
【问题讨论】:
标签: silverlight random platform-specific
我需要知道不同平台对System.Random 对象(Silverlight)的影响。在 Mac、PC 和 32 / 64 位上创建的序列是否相同?
【问题讨论】:
标签: silverlight random platform-specific
请原谅我的“愚蠢”回答,但在我看来,随机数应始终被视为随机,因此创建的序列应在任何“域”中处理为不相同。我知道 .NET(或 Silverlight)随机数生成器根据种子值使用伪随机算法,并且在使用相同的种子值时会生成相同的数列,但我不会依赖这个事实。
当您需要跨多个平台同步随机数时,您似乎有某种“期望”,并且对期望值序列使用随机数生成器对我来说看起来很奇怪。
如果您能告诉我们更多有关您的用例的信息,也许我们可以找到另一个更可靠的解决方案?
只是我的意见。
【讨论】:
Random 对象对于给定种子的可重复性。这应该可以转移到所有平台。需要注意的是,多个线程可能会从Random 的同一实例中分配数字,在这种情况下,引入了一个额外的随机元素。在这种情况下,即使使用相同的种子,代码也可能会以与先前运行不同的“顺序”来提取随机数。
生成随机数的算法被编码到运行时。因此,无论平台如何,对于给定的种子值,您都应该看到相同的“随机”数字集。
Random(其中种子值基于时间)的默认构造函数的确切行为可能因平台而异。例如,Random 实例的快速创建可能会创建一些生成相同序列的实例,这些“重复”的分布可能因包括平台在内的各种条件而异。
【讨论】: