如何在MATLAB中生成具有已知概率的随机向量(0,1)

时间:2011-09-02 17:26:12

标签: matlab probability

我正在使用以下代码

operation=[rand(1,noOfNodes)>prob];

生成1和0(noOfNodes次)。如果我使用prob=0.2并尝试100个值,则在某些情况下存在40个零。这不奇怪吗?

我需要得零的概率小于0.2

1 个答案:

答案 0 :(得分:7)

不,这并不奇怪。这是你的概率。

如果您翻转一次硬币100次,则不会总是得到50个头和50个尾巴。有时候你会得到49分和51分,在最稀有的场合,你甚至可以获得100次相同的分数。

使用上面的代码,当noOfNodes为100时,你不能保证总是得到20个零和80个。如果你想生成一个总是有20%零的向量,但是使用0和1的随机排序,那么您可以使用函数RANDPERM完成此操作,如下所示:

operation = [zeros(1,20) ones(1,80)];  %# Fill the vector with 0 and 1
operation = operation(randperm(100));  %# Randomly reorder it

如果要生成0到20%零的向量,可以使用函数RANDI修改上面的代码:

operation = [randi([0 1],1,20) ones(1,80)];
operation = operation(randperm(100));