Iroh a écrit:Salut, peux-tu montrer comment tu as fait pour avoir ces résultats en matlab stp ?
Voilà le code principal :
- Code: Tout sélectionner
victoire1 = 0;
victoire2 = 0;
combgagn = zeros(8,3);
combgagn(1,:) = [1,2,3];
combgagn(2,:) = [4,5,6];
combgagn(3,:) = [7,8,9];
combgagn(4,:) = [1,4,7];
combgagn(5,:) = [2,5,8];
combgagn(6,:) = [3,6,9];
combgagn(7,:) = [1,5,9];
combgagn(8,:) = [3,5,7];
for i = 1:1:362880
grille = grilles(i,:);
joueur1 = [grille(1),grille(3),grille(5),grille(7),grille(9)];
joueur2 = [grille(2),grille(4),grille(6),grille(8)];
ind1 = 10;
ind2 = 10;
for j = 1:1:8
[flag1,temp1] = Inclus(combgagn(j,:),joueur1);
[flag2,temp2] = Inclus(combgagn(j,:),joueur2);
if flag1 == true
ind1 = min(ind1,2*temp1-1);
end
if flag2 == true
ind2 = min(ind2,2*temp2);
end
end
if ind1 < ind2
victoire1 = victoire1 + 1;
elseif ind2 < ind1
victoire2 = victoire2 + 1;
end
end
grilles est un tableau 9!*9 qui contient toutes les permutations de |[1,9]| (que j'ai construit séparément), c'est-à-dire toutes les parties possibles en supposant que les joueurs continuent à remplir la grille même s'il y a déjà un vainqueur, de sorte que toutes les parties jouées de cette manière deviennent équiprobables.
La fonction Inclus(L,M) renvoie un couple [booléen,index] où le booléen vaut "true" si et seulement si l'ensemble des éléments de la liste L est inclus dans l'ensemble des éléments de la liste M, et index est l'indice dans M de l'élément de L qui apparaît en dernier dans M (index vaut 0 si L n'est pas incluse dans M). Par exemple Inclus([1,2,3],[3,5,4,1,8,2,6]) renvoie [true,5].
Sur les 362880 parties possibles, 212256 sont remportées par le joueur qui commence, 104544 par l'autre joueur, et 46080 sont nulles, ce qui donne les probas que j'ai écrites plus haut.
@beagle : t'as réussi à prouver à la main les 121/420 et 737/1260 ? Comment as-tu fait ?