【发布时间】:2017-06-16 23:40:36
【问题描述】:
我有这个向量:
人口 = [3, 5, 0, 2, 0, 5, 10, 50, 0, 1];
我需要用 1 到 4 之间的随机值填充这个向量,只有向量中有 0 值。
我该怎么做?
编辑:有办法使用 randperm 函数吗?
【问题讨论】:
我有这个向量:
人口 = [3, 5, 0, 2, 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))。
【讨论】:
[3, 5, 9]。
您可以使用以下代码:
ind = find(~Population); % find zero places
Population(ind) = randi(4,1,length(ind)); % replace them with a random integer
【讨论】: