-1

我正在尝试在 Matlab 的 for 循环中使用 while 循环。while 循环将重复相同的操作,直到满足某些条件。while 循环的结果是 for 循环中的一次迭代。我在正确获取它时遇到了问题。

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

对于您展示的示例,您必须进行初始化b,否则while- 语句在第一次调用时无法评估。
for-loop 内执行此操作以避免第一次迭代后的for误报:

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 回答