1

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

要求是:

  1. 每个节点都必须生成一个唯一的随机数而无需共享其他节点生成的内容。
  2. 生成的随机数的分布应该相互一致
  3. 如果生成的随机数的范围在 10-16 位左右或可能更小,那将是更可取的。

限制是:

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

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

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

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

4

1 回答 1

0

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

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

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

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

有关在单个节点上生成随机数的信息,请参见此处

于 2013-05-15T12:39:18.570 回答