因此,我正在GPU集群上设计蒙特卡罗PI仿真。
目前,我选择了一个随机数生成器算法,比如XorShift7。并且由于算法限制,对于一个种子,它只能生成2 ^ 32个数字,因为它是32位算法,并且序列将在2 ^ 32个数字之后重复。我让每个集群工作者计算整个序列的一部分,然后减少它们。
问题是,我想扩大随机数。我的想法是,我想使用多个随机数序列,使用不同的算法和不同的种子,例如:
cluster worker1: calc XorShift7(seed=0) from number0 to number2^31
cluster worker2: calc XorShift7(seed=0) from number2^31 to number2^32
cluster worker3: calc XorShift7(seed=1) from number0 to number2^31
cluster worker4: calc XorShift7(seed=1) from number2^31 to number2^32
cluster worker5: calc Mrg32k3a(seed=0) from number0 to number2^31
cluster worker6: calc Mrg32k3a(seed=0) from number2^31 to number2^32
cluster worker7: calc Mrg32k3a(seed=1) from number0 to number2^31
cluster worker8: calc Mrg32k3a(seed=1) from number2^31 to number2^32
然后我平均了8名工人的8项结果的价值。
我的问题是,这会从统计角度打破随机数属性吗?