在分布式环境中生成均匀分布的随机数

时间:2013-05-15 12:24:46

标签: database random p2p uuid boost-uuid

我必须在无线传感器网络中生成一个“唯一的随机数”,它符合闲聊的原则。

要求是:

  1. 每个节点必须生成唯一随机数不包含 了解其他节点生成的内容。
  2. 生成的随机数的分布应该是一致的 彼此尊重
  3. 如果生成的随机数的范围大约是10-16位或者可能更小,那将是更好的。
  4. 限制是:

    1. 一个节点不知道网络中其他节点正在生成什么号码。
    2. 在C,C ++中实现。
    3. 我还提供了使用唯一种子生成随机数。种子可以是 0-2 ^ 15 范围内的任何数字。

      如果无法生成这样的数字,那么如果有任何方法可以满足上述某些要求,那将会很有帮助。

      如果你可以建议我某种方法来实现这个结果,那将非常有帮助。

1 个答案:

答案 0 :(得分:0)

要使此解决方案正常工作,您必须知道生成网络中的节点总数。将此数字设为n

基本思想是在给定间隔内的每个参与节点上生成均匀分布的随机数。参与节点的n间隔不得重叠。 如果节点的总数没有改变,并且可以静态地为每个节点分配一些整数i< = n,使得每个数字仅发出一次,则共享种子不会使问题复杂化。而不是在每个回合生成一个随机数,而是生成n个数字,而节点i从该系列中获取i个数字。

然而,除非......:

,否则生成的随机数的总体分布将不一致
  • 您同步随机数生成。
  • 所有间隔都有相同的大小。

有关单个节点see here上的随机数生成的信息。