【问题标题】:How to adjust the distribution of values in a random data stream?如何调整随机数据流中值的分布?
【发布时间】:2010-03-10 20:20:38
【问题描述】:

给定一个无限的随机 0 和 1 流,它来自一个有偏的(例如,1 比 0 更常见的已知因子)但其他理想的随机数生成器,我想将它转换成一个(更短的)无限流既理想又不偏不倚。

查看definition of entropy 会发现这张图表显示了理论上我应该能够从每一位输入中获得多少位输出。

问题:是否有任何实用的方法来实际实现几乎理想效率的转换器?

【问题讨论】:

  • 这被称为“白化”数据。

标签: random information-theory


【解决方案1】:

冯诺依曼有一个众所周知的装置可以将不公平的硬币变成公平的硬币。我们可以使用这个设备来解决我们这里的问题。

从有偏差的源中反复抽取两个位,直到获得一对不同的位。现在返回第一位,丢弃第二位。这会产生一个无偏的来源。之所以可行,是因为无论来源如何,01 的概率与 10 的概率相同。因此,以 01 或 10 为条件的 0 的概率为 1/2,以 01 为条件的 1 的概率或 10 是 1/2。

【讨论】:

  • 另外,对不能重叠。
  • 那效率如何?需要多少位才能生成一个输出位? (除此之外,很好很简单,+1)
  • 这取决于您的数据分布。如果你得到一个由 10000 个“1”位组成的字符串,其中散布着一个“0”位 - 该算法将产生一个输出位。
  • 好的。在问题的开头加上“作为分布的函数”。
  • 这不是魔法......如果您的随机位源运行时间较长,它们将被吸收。如果它有频率分量,它们可能会出现在输出中。例如,0101010 的交替输入将产生恒定的 1 或 0 输出,而 00110011001100110011 的输入将产生 NO 输出!)
【解决方案2】:

【讨论】:

  • 随机提取器似乎与我正在寻找的最接近。 (其他似乎适用于有限数据集,我真的在寻找流操作)
【解决方案3】:

霍夫曼对输入进行编码

假设输入具有已知偏差,您可以计算每个 n 位段的校验和的概率分布。从那个构造一个Hoffman code,然后只对序列进行编码。

我不确定,但一个潜在的问题是这可能会在顺序位之间引入一些相关性。

【讨论】:

    猜你喜欢
    • 2012-07-10
    • 2011-03-17
    • 2016-09-21
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 2021-09-29
    相关资源
    最近更新 更多