生成带有熵参数的伪随机流

发布于 2025-01-05 09:55:16 字数 138 浏览 0 评论 0原文

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

How can I generate a stream of binary outcomes of length n with an equal number of 0's and 1's but with a biased frequency of pairwise outcomes, i.e. given alternation rate k ( freq(01) + freq(10) ) / ( freq(00) + freq(11) ) = k

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

给我一枪 2025-01-12 09:55:16

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

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

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

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

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

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

  1. 令reserve_eq = m且reserve_uneq=mk。
  2. 以等概率生成随机位 0/1。令 cur 为该位
  3. 输出 cur
  4. 生成带有加权概率 (reserve_eq,reserve_uneq)的 new_cur = (cur,1-cur)
  5. 如果 new_cur= cur 则递减 Reserve_eq,否则递减 Reserve_uneq
  6. cur = new_cur
  7. 转到步骤 3

在步骤 4 中,如果 Reserve_eq 和 都退出Reserve_uneq 都为零。输出字符串的长度为 km+m+1。

Generate a random markov chain with the following transition probability:

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

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

Essentially, if you just generated 0, generate another 0 with probability 1/(k+1)

Note: If you want to guarantee the requirements use the following approach

Let us assume you want to generate mk unequal combinations and m equal combinations.

  1. Let reserve_eq = m and reserve_uneq=mk.
  2. Generate a random bit 0/1 with equal probability. Let cur be that bit
  3. Output cur
  4. Generate new_cur = (cur,1-cur) with weighted probability (reserve_eq,reserve_uneq)
  5. If new_cur= cur then decrement reserve_eq, otherwise decrement reserve_uneq
  6. cur = new_cur
  7. Goto Step 3

In step 4 quit if both reserve_eq and reserve_uneq are both zero. The output string is of length km+m+1.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文