在矢量中创建随机值Matlab
问题描述:
我有此矢量:在矢量中创建随机值Matlab
人口= [3,5,0,5,10,50,0,1];
而且我需要用1和4之间的随机值填充此向量,只有向量中有0值。
我该怎么办呢?
编辑:有一种方法可以使用randperm函数来完成它吗?
答
首先,发现零个元素,那么生成的随机值,然后替换这些元素:
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
请看一看:?当有人回答我的问题,我应该怎么办(https://stackoverflow.com/help/someone-answers) – randomir