# How to create a random data set from the possible values?

1 view (last 30 days)
Tien Tran on 14 Apr 2016
Commented: Walter Roberson on 14 Apr 2016
I have eleven inputs, each input have several values. How can I create five hundred distinct sets of variables at random from the possible input values. (like following image)

Walter Roberson on 14 Apr 2016
pops = {500:500:5000, .3:.05:.6, .5:.5:2.5, .5:.1:1, 200:100:500, 2:6, 4000:1000:8000, 100:100:1000, 2:1:8, 5:2.5:15, 30:10:70};
popL = cellfun(@length, pops(:).');
npop = length(pops);
N = 500;
popidx = floor(rand(N,npop) .* repmat(popL, N, 1))+1;
samps = cell2mat(arrayfun(@(IDX) pops{IDX}(popidx(:,IDX)).', 1:npop, 'Uniform', 0));
And now samps is a 500 x 11 array in which column K is uniformly randomly selected from pops{K}
Walter Roberson on 14 Apr 2016
Yes, that is good too.
For whatever reason I figured it would be a good idea to calculate all of the indexes at the same time.

Roger Stafford on 14 Apr 2016
Let L be a column vector with eleven integers, each the count of the number of possible values in the corresponding set of the eleven sets.
L = [10;7;5;6;4;5;5;10;7;5;5]; % The number of possibilities in each set
I = ceil(L.*rand(11,1)); % I has random indices for each set
The vector I will then have random indices that can select one out of each of the sets of values you have listed.

### Categories

Find more on Data Type Conversion 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!

Translated by