Generating all ordered samples with replacement
이전 댓글 표시
Hello everybody,
is there a function in Matlab which generates an array containing all ordered samples of length k taken from a set of n elements
, that is all the k-tuples
where each
can be any of the
, and whose total number is
?
, that is all the k-tuples
where each
can be any of the
, and whose total number is Or can anybody suggest a simple code to generate all of them? I am guessing it involves the iterative use of datasample function checking that every new generated sample is different from the previous ones, but I couldn't find so far a satisfactory way to write it
채택된 답변
추가 답변 (2개)
For
and
,
n = 20;
k = 5;
result = dec2base(0:n^k-1, n); %generate all n^k samples with replacement, as char vector 0-9 + A-Z
result = result - '0' + 1; %convert character to numbers 1-10, A-Z get converted to 18+
result(result>17) = result(result>17) - 7 %convert 18+ to 11+
For greater n you'll have to use Jan's answer.
Riccardo
2019년 5월 8일
댓글 수: 3
No, that's going to be extremely slower than both solutions proposed. You're going to be wasting time generating many permutations that were already generated. Both solutions proposed just enumerate all the combinations, with no guessing.
With your solution, when there's only one row left to generate, the probability that it is returned by datasample will be
, extremely small. It's going to take a long time before that last row is generated.
Riccardo
2019년 5월 8일
Jan
2019년 5월 8일
Yes, it is formally correct.
카테고리
도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!