Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MATLAB中生成具有已知概率的随机向量(0,1)_Matlab_Probability - Fatal编程技术网

如何在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));