-1

Matlab の for ループ内で while ループを使用しようとしています。while ループは、いくつかの条件を満たすまで同じアクションを繰り返します。while ループの結果は、for ループの 1 回の反復です。それを正しく取得するのに問題があります。

n=100;
for i=1:n
    while b<0.5
        x(i)=rand;
        b=x(i);
    end
end

何が間違っているのかわかりません。ありがとう

4

2 に答える 2

4

問題に別の方法でアプローチします。必要な値が得られない場合は、再試行する必要randはありません。の結果をスケーリングして、rand必要な範囲にするだけです。これはそれを行う必要があります:

x = 0.5 + 0.5*rand(1, 100);
于 2013-09-10T22:03:46.290 に答える
1

あなたが示した例では、初期化する必要があります。そうしないとbwhileステートメントが最初に呼び出されたときに評価できません。最初の反復 後の誤検知を避けるために、ループ
内で実行します。forfor

n=100;
for ii=1:n
    b = 0;
    while b<0.5
        x(ii)=rand;
        b=x(ii);
    end
end

または、なしb:

n=100;
x = zeros(1,100);
for ii=1:n
    while x(ii)<0.5
        x(ii)=rand;
    end
end
于 2013-09-10T21:59:59.053 に答える