Bonjour,

Je sollicite votre aide pour améliorer mon code. Je vous explique.
J'ai génère une liste de périodes aléatoirement dans des groupes (classes) et je souhaiterai que toutes les classes soient couvertes par toutes les périodes. Supposant que j'ai 10 périodes et deux classes je dois avoir un résultat comme ceci (par exemple) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
classe 0 nbperiode 7 : 2 3 4 5 6 7 9 
classe 1 nbperiode 5 : 0 1 4 6 8
Remarque : on peut trouver deux périodes qui se répètent dans deux classes différentes mais pas dans la même classe.

Voici le code que j'ai fait mais le résultat trouvé n'est pas tout à fait correct.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for(int i=0 ; i<NombreClasses ; i++){ // nombre de classes
		y=0;
		for(int j=0 ; j<dm ; j++){ // nombre de periodes
			rando = unifRand();
			if (rando<0.5)
				{
					Mat_ClasseP[i][y]=j;
					y++;
					if (Tab_NbrPer[i]==1000)
						Tab_NbrPer[i]=1;
					else
						Tab_NbrPer[i]=Tab_NbrPer[i]+1;
					}
			}
		// s'il n'y a aucune periode
		if (y==0)
			{
				Mat_ClasseP[i][0] = val_rand(0,dm);
				Tab_NbrPer[i]=1;
				}
		}
Le résultat du code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
classe 0 nbperiode 6 : 0 2 4 7 8 9 
classe 1 nbperiode 4 : 1 2 4 7
Vous remarquez très bien que les 10 périodes ne sont pas toutes couvertes.
Merci pour vos réponses