How to check condition element by element till satisfied

2 views (last 30 days)
if true
clear all
format compact
a = ones(5)
w_rand = rand()
if w_rand > 0.5
a = -1
I want to generate random numbers for each element. now in the first condition the elements which get w_rand > 0 should flip to -1 and its value is fixed. now again the w_rand should be generated for the remaining 1 which satisfy the condition of w_rand should flip to -1. and the process goes on till the time all 1 goes to -1. in my code the all values change to -1 at once. where as i want to do this element by element
  1 Comment
Image Analyst
Image Analyst on 8 May 2016
"a" is a 5-by-5 array of random numbers. In your "first condition" you get an random number and check if it's greater than 0.5 and then "the elements" get set to -1. WHICH elements should get flipped? All of them? Some of them? Is so, which ones? All you're doing is changing "a" from a 5-by-5 array to a single scalar number. Anyway, you're going to need a while loop and the all() function to check that every element in "a" got set to -1.

Sign in to comment.

Accepted Answer

Elias Gule
Elias Gule on 9 May 2016
I hope this is what you're looking for:
a = ones(5);
sz = size(a);
a = a(:);
count = 0;
isDebug = true; %%So you know the while loop is running
for kk = 1 : length(a)
akk = a(kk);
while rand() < 0.5
if isDebug
fprintf('a(%d) = %d;\n',kk,akk);
a(kk) = -1;
a = reshape(a,sz);

More Answers (0)


Find more on Random Number Generation in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!