在矢量中创建随机值Matlab

问题描述:

我有此矢量:在矢量中创建随机值Matlab

人口= [3,5,0,5,10,50,0,1];

而且我需要用1和4之间的随机值填充此向量,只有向量中有0值。

我该怎么办呢?

编辑:有一种方法可以使用randperm函数来完成它吗?

+0

请看一看:?当有人回答我的问题,我应该怎么办(https://*.com/help/someone-answers) – randomir

首先,发现零个元素,那么生成的随机值,然后替换这些元素:

Population = [3, 5, 0, 2, 0, 5, 10, 50, 0, 1]; 
idx = find(Population==0); 
Population(idx) = 3 * rand(size(idx)) + 1; 

如果您需要整数(没有指定),刚轮在最后声明中产生的随机数,象这round(3*rand(size(idx))+1);或使用randi(正如@OmG的回答中所建议的):randi([1,4], size(idx))

+0

嗨! Find(population == 0)将返回一个数组的索引值? –

+0

@Jokesonme,是的,在你的例子中,它会返回vector:''[3,5,9]''。 – randomir

您可以使用下面的代码:

ind = find(~Population); % find zero places 
Population(ind) = randi(4,1,length(ind)); % replace them with a random integer