繁体   English   中英

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

[英]How do I generate a random vector (0,1) with a known probability in MATLAB

我使用以下代码

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

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

我需要获得小于0.2的零的概率

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

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

使用上面的代码,当noOfNodes为100时,你不能保证总是得到20个零和80个。如果你想生成一个总是有20%零的向量,但是随机排列的零和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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM