我正在使用以下代码
operation=[rand(1,noOfNodes)>prob];
生成1和0(noOfNodes
次)。如果我使用prob=0.2
并尝试100个值,则在某些情况下存在40个零。这不奇怪吗?
我需要得零的概率小于0.2
答案 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));