2010-07-27 72 views
0

我需要一个确定性的随机数生成器,它维护某种类型的分布(例如统一或正常),可以在群集上工作。在群集上分布式随机

Boost :: Random满足大部分这些要求。有什么方法可以在维护分发的同时在集群中使用它?

如果有一个有效的方法来推进数字发生器这将是理想的,但我找不到这样的功能。显然,我可以在一个循环中重复调用该函数,但是我需要在每个节点上执行几千次(可能更多)。

有关如何实现此目的的任何建议?

回答

2

我可能在这里丢失了一些明显的东西,但是难道你不能给每个簇的RNG一个不同的(伪)随机选择的种子吗?我认为这会给你所有集群的统一分配。

另一种方法是将所有随机数从一台计算机上分配出来,充当RNG服务器,但这可能会很慢。

+1

我不能想到任何普通的随机分布,每个节点都有自己的RNG不起作用。似乎OP可能只是在推翻问题。现在,如果他们想要一个像泊松圆盘分布一样更奇怪的东西,那么所有的位都是关闭的。 – McBeth 2010-07-27 11:21:01

+0

你错过了明显的东西。假设你的集群中有两台机器,并且运气不好,两台机器都以相同的种子开始。你的组合RNG现在不是那么随机的。现在,假设种子被一到三个关闭 - 错误仍然存​​在,但它并不明显,除非您注意到第一台机器生成的数字恰好与第二台机器生成的数字相同,通过一个或三个。 – kfmfe04 2011-11-14 08:59:40

+0

@ kfmfe04:虽然我没有错过。随机性需要每隔一段时间重复序列的可能性。另外,如果你知道种子,那么这种模式是可预测的,不管种子是否相同,这种效果都是相同的。 – 2011-11-14 19:09:39

0

根据您需要PRNG的强健程度,您可能需要在此谨慎行事;使用多个PRNG肯定存在缺陷。

尤其是,统计专家专门研究PRNG的并行算法。

要开始思考其中一些问题,您可能需要查看像this这样的论文。

像所有问题一样,我建议您先拍好,然后让它快速运行。