【问题标题】:Generating uniformly distributed random numbers in distributed environment在分布式环境中生成均匀分布的随机数
【发布时间】:2013-05-10 00:26:16
【问题描述】:

我必须在基于 Gossiping 原理的无线传感器网络中生成一个“唯一随机数”。

要求是:

  1. 每个节点都必须生成一个唯一的随机数没有 对其他节点生成的内容有任何共同了解。
  2. 生成的随机数的分布应该与 互相尊重
  3. 如果生成的随机数的范围在 10-16 位左右或可能更小,则更好。

限制是:

  1. 一个节点不知道网络中的其他节点正在生成多少数字。
  2. 用 C、C++ 实现。

我还可以使用唯一的种子来生成随机数。种子可以是 0-2^15 范围内的任何数字。

如果没有办法生成这样的数字,那么如果有任何方法可以满足上述一些要求,那将是有帮助的。

如果你能建议我一些方法来达到这个结果,那将是非常有帮助的。

【问题讨论】:

    标签: database random p2p uuid boost-uuid


    【解决方案1】:

    要使此解决方案起作用,您必须知道生成网络中的节点总数。让这个数字为n

    基本思想是在给定区间内的每个参与节点上生成均匀分布的随机数。参与节点的n 间隔不能重叠。 如果节点总数不变,并且每个节点可以静态分配一些整数i n,那么共享种子不会使事情复杂化,这样每个数字只发出一次。不是在每轮生成一个随机数,而是生成n 数字,并且节点i 采用该系列中的i-th 数字。

    但是,生成的随机数的整体分布不会是均匀的,除非...:

    • 您同步随机数生成。
    • 所有区间的大小相同。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      • 2012-09-18
      相关资源
      最近更新 更多