how to create an array of all permutations
3 ビュー (過去 30 日間)
古いコメントを表示
Hi there,
I have a question about how to create the following array in a simple, concise way (for any permutations).
Think of a 4 digit lock, but numbers allowed are not 0-9, but 1-6 or 0-17 (or any other range).
For 0-9 there are 10^4 permutations, which should be a 10000 x 4 array, each row showing one of the permutations.
I thought of building the array from 4 vectors (thousand, hundred, tens, ones), but that is also cumbersome when looking at a 7digit lock with 11 possible numbers for each digit.
example:
4 digits, possible numbers for each digit 1 - 6 (1296 permutations)
unity_ones = [1;6];
which means that the ones vector can be created by:
n = 1296/6;
ones_vector = [];
for i=1:n
ones_vector = [ones_vector,ones];
end
Then one can do the same for the tens_vector, hundreds_vector and thousands_vector... This seems not very efficient. I am sure there is an easier, one or two liner out there.... :-)
0 件のコメント
採用された回答
James Tursa
2020 年 7 月 2 日
If you want all of them in an array (which might be too large if the number of digits is too large), you can use
n = number of digits
b = range of the digits (0 to b)
result = dec2base(0:(b+1)^n-1,b+1);
This will give you a character array since the digits might be bigger than 9.
If b is 9 or less, you can turn this into numeric with
result = dec2base(0:(b+1)^n-1,b+1) - '0';
Otherwise, you would need code to convert the letters 'A' - whatever into numbers.
3 件のコメント
その他の回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!