How to create a random data set from the possible values?
조회 수: 2 (최근 30일)
이전 댓글 표시
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)
댓글 수: 0
채택된 답변
Walter Roberson
2016년 4월 14일
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}
댓글 수: 3
Jos (10584)
2016년 4월 14일
This is slightly easier:
camps = cell2mat(cellfun(@(c) reshape(c(randi(numel(c), N, 1)),N,1), pops, 'un', 0))
Walter Roberson
2016년 4월 14일
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.
추가 답변 (1개)
Roger Stafford
2016년 4월 14일
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.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!