私はこのベクトルを持っています:ベクトルでランダムな値を作成するMatlab
人口= [3,5,0,2,0,5,10,50,0,1];
そして、私はこのベクトルを1から4の間のランダムな値で塗りつぶす必要があります。
どうすればいいですか?
編集:randperm機能を使用して行う方法がありますか?
私はこのベクトルを持っています:ベクトルでランダムな値を作成するMatlab
人口= [3,5,0,2,0,5,10,50,0,1];
そして、私はこのベクトルを1から4の間のランダムな値で塗りつぶす必要があります。
どうすればいいですか?
編集: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))
を使用してください。
こんにちは! Find(population == 0)は、値のインデックスを持つ配列を返しますか? –
@Jokesonme、はい、あなたの例では、ベクトル: '' [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