jeanw
Messages postés2Date d'inscriptionmardi 29 mars 2005StatutMembreDernière intervention17 mai 2005
-
17 mai 2005 à 09:25
jeanw
Messages postés2Date d'inscriptionmardi 29 mars 2005StatutMembreDernière intervention17 mai 2005
-
17 mai 2005 à 11:35
Bonjour
j'ai une matrice et j'aimerais créer une autre matrice qui est une permutation aléaoire des colonnes de la première matrice en C++.
Est-ce qu'on pourrait m'aider ?? ( soit l'idée, soit un pseudo-code)
Merci
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 17 mai 2005 à 10:59
selon-moi, voici les étapes à faire (matrices de taille NUM_COL*NUM_ROW:
1 - générer un tableau de taille NUM_COL donnant les permutations
int perm[NUM_COL];
for(int i = 0; i < NUM_COL; i++)
perm[i] = -1;
srand(time(NULL));
for(i = 0; i < NUM_COL; i++)
{
int val;
do
{
val = rand()%NUM_COL;
}perm[val] != -1;
perm[val] = i;
}
2 réaliser la permutation
je vois 2 méthodes :
- une qui utilise 2 matrices et qui copie dans la secondes les colonnes de la première en fonction de perm.
- une qui utilise la matrice initiale et qui inverse les colonnes 2 à 2 (plus délicats car necéssite plus de reflexion mais gagne de la place en mémoire).
pour la première méthode :
int src[NUM_COL][NUM_ROW];
int dst[NUM_ROL][NUM_ROW];
for(int i = 0; i < NUM_COL; i++)
{
for(j = 0; j < NUM_ROW; j++)
dst[perm[i]][j] = src[i][j];
}