One way would be to use a 3D array for dataA variable or;
for z=1:1000
for i=1:20
x(i)=rand;
y(i)=2*x(i)+1;
end
dataA(z,:)=y;
diff=max(y)-min(y);
if diff<0.01
break;
end
end
You do not need to assign dataA to y(i) inside the loop.
You do not need to define z = z+1, "for loop" does it automatically.
Instead of return, I suggest you use break as well.