While loop not performing
조회 수: 2 (최근 30일)
이전 댓글 표시
Hi,
I have the following code. My aim is to make each and every entry of vector a zero, i.e. to make it a vector of zeros. I am doing this by using a while loop and choosing a random number within a's dimensions and making that entry 0. It should do this until all entries become zero and it should, in addition, count the times it took to make the vector zero.
My problem is that the loop doesn't work at all. How can I make it better, or where is the mistake I cannot see here?Hi,
I have the following code. My aim is to make each and every entry of vector a zero, i.e. to make it a vector of zeros. I am doing this by using a while loop and choosing a random number within a's dimensions and making that entry 0. It should do this until all entries become zero and it should, in addition, count the times it took to make the vector zero.
My problem is that the loop doesn't work at all. How can I make it better, or where is the mistake I cannot see here?
a=ones(1,10);
while(a==zeros(1,10))
N=1;
x=randi([1 10])
a(x)=0
N=N+1;
end
a
end
댓글 수: 0
채택된 답변
Walter Roberson
2019년 2월 15일
When you use if or while with a condition, then MATLAB only considers the condition to be true if all the values being tested are non-zero.
You initialize a to a vector of 1's, and test whether that vector == 0. None of the entries are equal to 0, so not all of the values are true (non-zero), so the while ends immediately.
You could test
while any(a)
which would be equivalent to testing
while any(a ~= 0)
댓글 수: 4
Walter Roberson
2019년 2월 16일
N = 10;
a = ones(1, N);
C = 0;
while any(a ~= 0)
C = C + 1;
idx = randi([1 N]);
a(idx) = 0;
end
fprintf('Needed %d iterations\n', C);
추가 답변 (1개)
Uendi Hajderaj
2019년 2월 16일
편집: Uendi Hajderaj
2019년 2월 16일
댓글 수: 1
Luigi Mario
2019년 2월 27일
You already know the answer. Just add another array.
a=ones(1,10);
timesItTakes = zeros(1,10);
for M=1:10
while (a(M)~=0);
x=randi([1 10])
a(x)=0
timesItTakes(x) = timesItTakes(x) + 1
end
end
a
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!