v
空のベクトルから始めて、ランダムに選択した1から20までの数字をの末尾に繰り返し配置することによってベクトルを形成するプロセスを想像してみてくださいv
。Matlabを使用してv
、1から20までのすべての数値が含まれるまでにかかる平均ステップ数をどのように調査できますか?回答に必要な数の関数またはスクリプトを定義/使用できます。
v=[];
v=zeros(1,20);
for a = 1:length(v)
v(a)=randi(20);
end
以来、v
二つの数字がある場合は、今だけ1X20ベクトル等しく、それは間違いなく1から20までのすべての20個の数字を持っていません
for i = 1:length(v)
for j = i+1:length(v)
if v(i)==v(j)
v=[v randi(20)];
i=i+1;
break;
end
end
end
for k = 1:length(v)
for n = 1:20
if v(k)==n
v=v;
elseif v(k)~=n
a=randi(20);
v=[v a];
end
if a~=n
v=[v randi(20)];
k=k+1;
break;
end
end
end
disp('number of steps: ')
i*k
あなたの質問を正しく理解しているかどうかはわかりませんが、unique()
関数を見てみてください。
もし
length(unique(v)) == 20
次に、ベクトルに1:20からのすべての値があります
v = []
counter = 0;
while length(unique(v)) ~= 20
a = randi(20);
v=[v a];
counter = counter +1
end
この値counter
は、vにすべての値が含まれるまでに必要な反復回数を示します。
試行錯誤によって平均反復回数を取得したい場合は、このコードを調べて10000回テストし、結果を平均してくださいcounter
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加