MATLAB: How to create a vector that assembles 30000 sets of parameters at random from the specified ranges

for looplarge vector

Hello,
I'm trying create a vector that assembles 30000 sets of parameters at random from the specified ranges.
I have a total of 30 parameters and each parameter values will be randomly selected from the specified ranges.
My initial code is something alone the line below;
par1 = 0.01+(0.2-0.01).*rand(30000,1); %when min=0.01 and max=0.2
par2 = 0.1+(0.5-0.1).*rand(30000,1); %when min=0.1 and max=0.5
% repeat this until par30
par = [par1 par2 par30]
Instead of doing this, is there a more efficient way to write the code? maybe using loop?
Thank you in advance,

Best Answer

You could writing a function that receives the lower and upper bounds as inputs along with the number of values to choose.
function d = boundedRandomNumbers(LB,UB,N)
% Draws N random samples between lower bound LB and upper bound UB
d = rand(N,1)*(UB-LB) + LB;
To get 30k values between the bounds,
par1 = boundedRandomNumbers(0.01, 0.02, 30000);
par2 = boundedRandomNumbers(0.1, 0.5, 30000);
If your bounds were stored in an 30x2 matrix, you could even loop through each row of the matrix and store the parameter values in a 2nd matrix.
% bounds is 30 x 2 matrix of [lower, upper] bounds
parAll = zeros(30,30000);
for i =1:30
parAll(i,:) = boundedRandomNumbers(bounds(i,1), bounds(i,2), 30000);
end