2017-06-16 17 views
0

私はこのベクトルを持っています:ベクトルでランダムな値を作成するMatlab

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

そして、私はこのベクトルを1から4の間のランダムな値で塗りつぶす必要があります。

どうすればいいですか?

編集: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、はい、あなたの例では、ベクトル: '' [3、5、9] ''を返します。 – randomir

0

次のコードを使用することができます

ind = find(~Population); % find zero places 
Population(ind) = randi(4,1,length(ind)); % replace them with a random integer 
関連する問題