使用熵参数生成伪随机流

时间:2012-02-12 00:21:45

标签: algorithm random entropy information-theory

如何生成长度 n 的二进制结果流,其中0和1的数量相等,但成对结果的偏差频率,即给定的交替率 k ( freq(01) + freq(10) ) / ( freq(00) + freq(11) ) = k

1 个答案:

答案 0 :(得分:1)

生成具有以下转移概率的随机马尔可夫链:

        0       1
0   1/(k+1)  k/(k+1)

1   k/(k+1)  1/(k+1)

基本上,如果您刚刚生成0,则生成另一个0,概率为1 /(k + 1)

注意:如果您想保证要求,请使用以下方法

让我们假设你想要生成mk不等组合和m个相等的组合。

  1. 让reserve_eq = m和reserve_uneq = mk。
  2. 以相等的概率生成随机位0/1。让那个位
  3. 输出cur
  4. 使用加权概率生成new_cur =(cur,1-cur)(reserve_eq,reserve_uneq)
  5. 如果new_cur = cur则递减reserve_eq,否则递减reserve_uneq
  6. cur = new_cur
  7. 转到第3步
  8. 如果reserve_eq和reserve_uneq都为零,则在步骤4退出。输出字符串的长度为km + m + 1.