[matrices]

jeanw Messages postés 2 Date d'inscription mardi 29 mars 2005 Statut Membre Dernière intervention 17 mai 2005 - 17 mai 2005 à 09:25
jeanw Messages postés 2 Date d'inscription mardi 29 mars 2005 Statut Membre Dernière intervention 17 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

2 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
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];
}

recopie éventuelle de dst dans src.
0
jeanw Messages postés 2 Date d'inscription mardi 29 mars 2005 Statut Membre Dernière intervention 17 mai 2005
17 mai 2005 à 11:35
salut
merci pour tout ça , je vais aller tester et adapter la solution au problème. Si il y encore un besoin, je te redis.
merci
0
Rejoignez-nous