我怎样才能创建一个与另一个序列不同的概率为 p 的序列?

How can i create a sequence that differs from another one with some probability p?

你好,我有一个 10 位的随机序列 x=0100100011

我想创建另一个序列 y 但概率 0.2 不同于 x.That 实际上意味着当我有 10 位时我大约期望 10 位中有 2 位与我的初始序列不同。 如何在 matlab 上实现它?

谢谢。

假设

  • 每个比特被翻转的概率相同,并且
  • 翻转对于不同的位位置是独立的,

您可以按如下方式进行:

x = [0 1 0 0 1 0 0 0 1 1];
p = 0.2; % probability of bit flip
y = xor(x, rand(size(x))<p);

平均而言,xy 会在一小部分 p 位上有所不同。

工作原理

rand(size(x))<p 创建一个与 x 大小相同的序列,其中每个元素 包含 1 的概率为 p,否则为 0。每个 1 表示应更改 x 中的相应值。这是通过 xor(x, ...).

完成的

虽然在问题中预计 大约 10 位中有 2 位与初始序列不同,但在以下答案中 完全 10 位中有 2 位与初始序列不同:

x = [0 1 0 0 1 0 0 0 1 1];
n = 10;
p = 2;

pos = randperm(n, p);
x(pos) = ~x(pos);