如何在MATLAB中生成具有已知概率的随机向量(0,1)
我正在使用以下代码如何在MATLAB中生成具有已知概率的随机向量(0,1),matlab,probability,Matlab,Probability,我正在使用以下代码 operation=[rand(1,noOfNodes)>prob]; 生成1和0(noOfNodestimes)。如果我使用prob=0.2并尝试100个值,则在某些情况下存在40个零。这不是很奇怪吗 我需要得到小于0.2的零概率不,这并不奇怪。这对你来说是可能的 如果你把一枚硬币掷100次,你并不总是得到50个正面和50个反面。有时你会得到49和51,在最罕见的情况下,你甚至可以得到100次相同的 使用上述代码,当noOfNodes为100时,不能保证总是得到20
operation=[rand(1,noOfNodes)>prob];
生成1和0(noOfNodes
times)。如果我使用prob=0.2
并尝试100个值,则在某些情况下存在40个零。这不是很奇怪吗
我需要得到小于0.2的零概率不,这并不奇怪。这对你来说是可能的 如果你把一枚硬币掷100次,你并不总是得到50个正面和50个反面。有时你会得到49和51,在最罕见的情况下,你甚至可以得到100次相同的 使用上述代码,当
noOfNodes
为100时,不能保证总是得到20个零和80个一。如果您想生成一个始终有20%零的向量,但具有零和一的随机顺序,那么您可以使用如下函数完成此操作:
如果要生成一个包含0%到20%零的向量,可以使用以下函数修改上述代码:
非常感谢。这将始终提供20%或(20%及以下==>@pac:是的,它将始终提供一个包含20%零的向量。我更新了我的答案,以向您展示如何生成一个包含0%和20%零的向量。我尝试了以下操作:操作=[randi([01],1,20)one(1,80)];操作=操作(randperm(noOfNodes));我得到了结果:1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1这是80%还是更低?有什么问题?@pac:Your
noOfNodes
可能设置为20而不是100(即它应该是操作的长度
)。我想生成noOfNodes(变量)乘以0和1的值。其中只有20%是零。我应该加上randi([01],1,(noOfNodes noOfNodes*0.8)one(1,noOfNodes*0.8)]!
operation = [zeros(1,20) ones(1,80)]; %# Fill the vector with 0 and 1
operation = operation(randperm(100)); %# Randomly reorder it
operation = [randi([0 1],1,20) ones(1,80)];
operation = operation(randperm(100));