2017-06-16 116 views
0

我有此矢量:在矢量中創建隨機值Matlab

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

而且我需要用1和4之間的隨機值填充此向量,只有向量中有0值。

我該怎麼辦呢?

編輯:有一種方法可以使用randperm函數來完成它嗎?

+0

請看一看:?當有人回答我的問題,我應該怎麼辦(https://stackoverflow.com/help/someone-answers) – randomir

回答

0

首先,發現零個元素,那麼生成的隨機值,然後替換這些元素:

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

0

您可以使用下面的代碼:

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