我怎样才能创建一个与另一个序列不同的概率为 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);
平均而言,x
和 y
会在一小部分 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);
你好,我有一个 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);
平均而言,x
和 y
会在一小部分 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);