How can I generate a Matrix (4x4) with random different figures from 1 to 4 ?
53 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello, How can I generate a Matrix (size 4x4) with random different figures from 1 to 4 ? Figures must be different in the lines and the columns. in example:
A=[1 2 3 4; 2 1 4 3; 3 4 1 2; 4 3 2 1]
thank you.
0 commentaires
Réponse acceptée
Jan
le 10 Avr 2013
Modifié(e) : Jan
le 10 Avr 2013
You can start with a valid matrix:
A = [1:4; 1:4, 1:4, 1:4];
Then perform only operations, which do not destroy the validity: Interchange rows and columns in pairs:
for k = 1:1000
index = randperm(4, 2); % older Matlab versions accept 1 input only
A(index(1), :) = A(index(2), :);
index = randperm(4, 2);
A(:, index(1)) = A(:, index(2));
end
Or a constructive method which rejects not matching input:
A = zeros(4, 4);
A(1, :) = randperm(4, 4);
index = 2;
while index <= 4
newRow = randperm(4, 4);
match = bsxfun(@ne, A(1:index - 1, :), newRow);
if all(match(:))
A(index, :) = newRow;
index = index + 1;
end
end
Actually trivial ideas with just some tricks in the implementation.
Plus de réponses (1)
Andrei Bobrov
le 10 Avr 2013
Modifié(e) : Andrei Bobrov
le 17 Avr 2013
n = 4;
A = rem(bsxfun(@plus,1:n,(0:n-1)')-1,n)+1;
or [EDIT]
A = hankel(1:n,[n 1:n-1]);
A = A(randperm(n),:);
A = A(:,rendperm(n));
2 commentaires
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!