いつ停止するかわからないまま、空のベクトルにランダムな値を繰り返し追加するにはどうすればよいですか?平均歩数を数える方法は?

ユーフィーニャー

v空のベクトルから始めて、ランダムに選択した1から20までの数字をの末尾に繰り返し配置することによってベクトルを形成するプロセスを想像してみてくださいvMatlabを使用して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
user7431005

あなたの質問を正しく理解しているかどうかはわかりませんが、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]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ