我如何创建一个与另一个序列具有一定概率p的序列?

问题描述 投票:1回答:2

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

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

谢谢。

matlab probability bit
2个回答
2
投票

假设

  • 每个位具有被翻转的相同可能性,并且
  • 翻转对于不同的位位置是独立的,

您可以执行以下操作:

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大小相同的序列,其中每个元素 包含概率为1p,否则为0。每个1表示应更改x中的相应值。这是通过xor(x, ...)完成的。


0
投票

虽然在问题中,我们希望大约 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);

© www.soinside.com 2019 - 2024. All rights reserved.