Forums/ The 7th Continent/ Stratégies & Tactiques72 messages
Posté
Pour t'aider à gagner du temps tu as une optimisation possible aussi. Si un tirage est déjà bon inutile de tirer plus de cartes, tu sais déjà que toutes les futures combinaisons seront bonnes. Toutefois il ne faut pas oublier de rajouter le nombre de tirage restant pour les ajouter en tant que réussite :).

exemple 3 cartes/ 1 succès.

Si la première carte que je tire est un succès inutile de parcourir la liste des tirages incluant cette carte.
Objectif toutes :flag_curse_sm: par tous les explorateurs
DV CC
ME: 4/10 CD:4/10 LG : 7/10 SI : 4/10 TS : 4/10 OG : 2/10 AR : 0/10 PN : 0/10 PV : 0/10 VT : 0/10
Posté
Pour ma part, je travaille sur un fichier "Excel".
Je détermine dans un premier temps la composition du deck, en fonction des cartes de base, auxquelles j'ajoute le nombre correspondant aux Explorateurs, ainsi que les compétences avancées acquises. Et enfin, je soustrais les cartes piochées / défaussées / bannies...

A partir de là, je place chaque carte dans une "case" (par exemple, 1D et 7+1D sont dans la même quand 7 vaut 0), l'assignation variant selon le nombre de :icon_succes_7:

Et la dernière étape, construire de façon statique les différentes combinaisons pour chaque "case". Ca prend pas mal de temps parce que je dois énumérer les différents tirages.
Et tout ça, évolue en fonction de la composition du deck d'action.
Mais comme je le disais plus tôt, j'ai un souci sur les probas à 2 cartes... Faut que je vérifie tout ça.
Posté
J'ai reprogrammé mon algorithme pour ne plus passer par le stockage des combinaisons : j'explore maintenant l'arbre de probabilité et je retrouve exactement les mêmes chiffres qu'auparavant... sauf que maintenant ça met beaucoup moins de temps et ça demande normalement beaucoup moins de mémoire.
Posté
Tu as un problème dans ton script alors :/
Je retrouve les mêmes chiffres que Zagor pour les probas 1 carte et 2 cartes.
Je serai même plus prècis :

(Pour 1 Explorateur, sans 7)
1 carte tirée :
- 0 succès : 42,22%
- 1 succès : 51,11% (1+ : 57,77%)
- 2 succès : 4,44% (2+ : 6,66%)
- 3 succès : 2,22%

2 cartes tirées :
- 0 succès : 11,72%
- 1 succès : 37,47% (1+ : 88,27%)
- 2 succès : 35,25% (2+ : 50,80%)
- 3 succès : 12,93% (3+ : 15,55%)
- 4 succès : 2,42% (4+ : 2,62%)
- 5 succès : 0,20%

Je vais pouvoir passer aux 3 cartes tirées.
Posté - Edité
Je ne vois pas comment savoir qui a raison ou non (je ne dis pas que j'ai plus raison que vous) Mais il faudrait que vous partagiez votre formule. Je suis en train de refaire un fichier pour mettre à disposition mon script afin de pouvoir regarder qui a raison ou non.

Apparemment, j'ai effectivement mal corrigé le coup des demi-étoiles. Je revérifie mon script.
Posté
Le fichier que j'utilise pour mes calculs, ici.

La ligne 3 dénombre les cartes d'un type donné dans le deck "de base".
La ligne 4 dénombre les cartes Malédictions, en fonction du nombre de Malédictions.
La ligne 5 dénombre les cartes Action supplémentaires en fonction du nombre d'Explorateurs.

La ligne 7 dénombre les cartes Action "avancées" disponibles.
La ligne 8 dénombre les cartes Action "avancées" effectivement ajoutées au deck.

La ligne 10 somme les différents éléments pour définir le deck référence qui est utilisé.
La ligne 11 dénombre les cartes Action qui ont quitté le deck.

La ligne 13 dénombre les cartes composant le deck actuel.

En ligne 15, il est nécessaire d'indiquer de combien de :icon_succes_7: on dispose.

En ligne 17, on a une liste de "catégories". Chaque carte appartient à une de ces catégories. Les cartes "7+1D" par exemple appartiennent à la catégorie "1D" si on a 0 :icon_succes_7:, mais appartiennent à la catégorie "1+1D" si on a 1 :icon_succes_7:, etc... Je me suis arrêté à 6 succès pour une carte. Je regroupe dans cette catégorie toutes les cartes qui rapportent 6 succès ou plus.
En ligne 18, on dénombre les cartes par catégories, en fonction du nombre de :icon_succes_7:.

Le tableau qui commence ligne 29 est à comprendre comme ceci : Probabilité d'obtenir un nombre de succès en fonction du nombre de cartes piochées. Ainsi, la case C30 indique la probabilité d'avoir 0 succès en piochant 1 carte (42.22% pour le cas de 0 :icon_succes_7:).
Pour chaque cellule, le calcul est visible dedans. Je me suis appuyé sur un tableau à double entrée rédigé sur papier pour déterminer les formules. Autant pour 1 carte, c'est simple, pour 2 cartes ça devient un poil lourd. Pour 3 cartes et plus, je vais pas mal ramer...

De mon point de vue, la seule erreur que j'ai pu faire, c'est considérer sur un tirage de 2 cartes que si on tire une carte "1D+1G" et une carte "1+1D+1G", j'ai estimé qu'il y avait 2 succès et non 3.
Lignes 20 à 26, c'est un tableau récap qui m'a permis de faire le tri.
Posté - Edité
J'ai corrigé mon algorithme et je retombe sur tes chiffres, foutues doubles demi-étoiles...

J'ai regardé ton algorithme, tu fais la même chose que mon second algorithme mais à la main, ce qui du coup est franchement chaud à partir de 3 cartes.

Normalement, c'est bon même pour plus de deux cartes demi étoile de mon côté. Je vais juste voir si sur 3 cartes c'est bon aussi.

EDIT : Ça a l'air d'être le cas.

Pour toutes les combinaisons à trois cartes avec des cartes à double demi-étoiles :
Le premier "array" est le tirage de trois carte. Ce qui compte est le premier chiffre après le deuxième "Array" qui correspond au nombre de succès, le quatrième chiffre est le nombre de :7:.

Array [ "0", ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 1, 0, 0, 1 ]
Array [ "0", ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 1, 0, 0, 1 ]
Array [ "0", ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 1, 0, 0, 2 ]
Array [ "1", ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 1 ]
Array [ "1", ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 1 ]
Array [ "1", ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ "2", ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 1 ]
Array [ "2", ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 1 ]
Array [ "2", ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 2 ]
Array [ "3", ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 4, 0, 0, 1 ]
Array [ "3", ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 4, 0, 0, 1 ]
Array [ "3", ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 4, 0, 0, 2 ]
Array [ ":icon_success-left:", ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 1 ]
Array [ ":icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 1 ]
Array [ ":icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":icon_success-right:, :icon_success-left:", "0", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 1, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", "1", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", "2", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", "3", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 4, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", ":icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:, :icon_success-right:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":icon_success-right:, :icon_success-left:", "1,:icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", "1, :icon_success-right:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", " :icon_success-right:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:,1,:icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 2 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", "0" ] Array [ 1, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", "1" ] Array [ 2, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", "2" ] Array [ 3, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", "3" ] Array [ 4, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-left:" ] Array [ 2, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", ":7:, :icon_success-right:" ] Array [ 2, 0, 0, 2 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", "1,:icon_success-left:" ] Array [ 3, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", "1, :icon_success-right:" ] Array [ 3, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", " :icon_success-right:" ] Array [ 2, 0, 0, 1 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", ":7:,1,:icon_success-left:" ] Array [ 3, 0, 0, 2 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:, :icon_success-right:", ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:, :icon_success-right:", ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:, :icon_success-right:", ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 3 ]
Array [ "1,:icon_success-left:", ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 1 ]
Array [ "1,:icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 1 ]
Array [ "1,:icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 2 ]
Array [ "1, :icon_success-right:", ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 1 ]
Array [ "1, :icon_success-right:", ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 1 ]
Array [ "1, :icon_success-right:", ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 2 ]
Array [ " :icon_success-right:", ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 1 ]
Array [ " :icon_success-right:", ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 1 ]
Array [ " :icon_success-right:", ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:,1,:icon_success-left:", ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 2 ]
Array [ ":7:,1,:icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 2 ]
Array [ ":7:,1,:icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 3 ]
Array [ ":7:,:icon_success-left:", ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:,:icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:,:icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 3 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", "0", ":icon_success-right:, :icon_success-left:" ] Array [ 1, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", "0", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 1, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", "1", ":icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", "1", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", "2", ":icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", "2", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", "3", ":icon_success-right:, :icon_success-left:" ] Array [ 4, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", "3", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 4, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:", "0" ] Array [ 1, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:", "1" ] Array [ 2, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:", "2" ] Array [ 3, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:", "3" ] Array [ 4, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:", ":icon_success-left:" ] Array [ 2, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:", ":7:, :icon_success-right:" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:", "1,:icon_success-left:" ] Array [ 3, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:", "1, :icon_success-right:" ] Array [ 3, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:", " :icon_success-right:" ] Array [ 2, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:", ":7:,1,:icon_success-left:" ] Array [ 3, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":7:, :icon_success-right:", ":icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":7:, :icon_success-right:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 3 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", "1,:icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", "1,:icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", "1, :icon_success-right:", ":icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", "1, :icon_success-right:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", " :icon_success-right:", ":icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 1 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", " :icon_success-right:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":7:,1,:icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":7:,1,:icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 3, 0, 0, 3 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-left:", ":icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:" ] Array [ 2, 0, 0, 3 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", "0" ] Array [ 1, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", "1" ] Array [ 2, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:", ":7:,:icon_success-right:, :icon_success-left:", "2" ] Array [ 3, 0, 0, 2 ]
Array [ ":7:,:icon_success-right:, :icon_success-left:
Posté
Parfois, je fais un programme, parfois, je suis un laborieux...
Par exemple, pour 1 succès avec 3 cartes, mon énumération me donne :
- [ 0, 0, (1, 1+1D, 1+1G, 1+1D+1G) ] *3
- [ 0, 1D, (1G, 1D+1G, 1, 1+1D) ] *6
- [ 0, 1G, (1D+1G, 1, 1+1G) ] *6
- [ 0, 1D+1G, 1D+1G ] *3
- [ 0, 1D+1G, 1 ] *6
- [ 1D, 1D, (1G, 1D+1G, 1, 1+1D) ] *3
- [ 1G, 1G, (1D+1G, 1, 1+1D) ] *3
Posté
Eolindel a écrit :
J'ai corrigé mon algorithme et je retombe sur tes chiffres, foutues doubles demi-étoiles...


héhé ;) elles sont fourbes celles là :).
Objectif toutes :flag_curse_sm: par tous les explorateurs
DV CC
ME: 4/10 CD:4/10 LG : 7/10 SI : 4/10 TS : 4/10 OG : 2/10 AR : 0/10 PN : 0/10 PV : 0/10 VT : 0/10
Posté - Edité
Kornetmuse a écrit :
Eolindel a écrit :
J'ai corrigé mon algorithme et je retombe sur tes chiffres, foutues doubles demi-étoiles...


héhé ;) elles sont fourbes celles là :).

on l'avez prévenu en plus :-P

Note : le tableau/image des array j'ai l'impression qu'il fait bugué le forum, chez moi ça à décalé tout sur la droite
j'ai signalé le bug alors Eolindel modifie pas ton post le temps que Kamille puisse jeter un oeil
:icon_curse: Yslamaar :icon_curse:
Posté
Eolindel a écrit :
J'ai corrigé mon algorithme et je retombe sur tes chiffres, foutues doubles demi-étoiles...
J'ai regardé ton algorithme, tu fais la même chose que mon second algorithme mais à la main, ce qui du coup est franchement chaud à partir de 3 cartes.
...

Ouaip, sont pénibles :)
Et oui, ça devient chaud. C'est assez laborieux, mais c'est pas grave je cherche pas à être efficace. Et quand je vais attaquer les 4 ou 5 cartes, ce sera encore pire :D
Posté - Edité
Du coup, pour corriger, j'ai dû pas mal complexifier l'algorithme :

- Je prend mon tableau qui contient les cartes piochées,
- puis, je prend carte par carte que je décompose en éléments simples (étoiles complètes, demi-étoile ou :7:)
- Ensuite je compte pour le nombre de demi-étoiles sur la carte et je retranche 1 succès s'il y a deux demi-étoiles simultanément
- j'ajoute mes décompte en comptant les demi-étoiles séparément
- j'ajoute autant de succès que de paires de demi-étoiles
- ensuite si j'ai une carte avec deux demi-étoiles et encore une demi-étoile qui reste à la fin, alors j'ajoute un succès
- si j'ai plus d'une carte avec deux demi-étoiles, j'ajoute le nombre de carte bi-étoile -1.

Mais le nombre de combinaisons possibles est en 9^n moins quelques pouillèmes au mieux (je crois) donc c'est rapidement super chaud de tout lister.

Pour le nombre de combinaisons possibles en fonction du nombre de cartes (en retranchant ceux impossibles) ke pire cas théorique étant 9^n on gagne rapidement (seulement 381 023 combinaisons possibles au lieu du maximum théorique de 9^6=531 441)

1 9 2 79 3 678 4 5700 5 47016 6 381023
Posté
Mon tableur googledrive utilise aussi la "force brute" pour calculer le nombre de succès en fonction des cartes tirées.

Je "modélise" les cartes ou le résultat de plusieurs cartes comme ceci "étoiles(demi-étoile D et/ou G)symbole 7":
  • malédiction 0()-
  • bolas 1(D)7
  • sarbacane 1(G)-

Mon tableur est en mesure de donner le résultat d'une pioche comme celle-ci :
  • malédiction & bolas & sarbacane => 0()- & 1(D)7 & 1(G)- = 3()7
  • 1(D)7 & 1(D)- = 2(DD)7
  • 1(D)7 & 0(GD)- = 2(D)7


A partir du résultat je décompte le nombre de cas (en tenant compte que je garde les cartes piochées) pour chaque étoile et chaque symbole 7.

Pour le cas d'une pioche de 45 cartes (35 compétences + 5 cartes malédiction + 5 compétences d'explorateur)

Pioche d'1 carte (nombre de possibilités = 45)
  • 0 étoile = 19 cartes
  • 1 étoile = 23 cartes
  • 2 étoiles = 2 cartes
  • 3 étoiles = 1 cartes

Total : 19 + 23 + 2 + 1 = 45 combinaisons
Ainsi la probabilité d'avoir 1+ étoile = (23+2+1)/45 = 57,8%

La probabilité de piocher 1 symbole 7 est de 11,1%

Pioche de 2 cartes (nombre de possibilité 45 * 44 = 1980)
  • 0 étoile = 232 cartes
  • 1 étoile = 742 cartes
  • 2 étoiles = 698 cartes
  • 3 étoiles = 256 cartes
  • 4 étoiles = 48 cartes
  • 5 étoiles = 4 cartes

Total : 232 + 742 + 698 + 256 + 48 + 4 = 1980 combinaisons
Ainsi la probabilité d'avoir 2+ étoile = (698+256+48+4)/1980 = 50,8%

La probabilité de piocher 1 ou + symbole 7 est de 46,5%
[52h] DV :flag_curse_sm: :icon_curse: :icon_succes: - OG :flag_curse_sm: :icon_curse: - LG :flag_curse_sm: :icon_curse: - CD :flag_curse_sm: (en cours) - SI - TS - ME - T7C
Posté - Edité
En force brute c'est vite la misère déjà, tu peux gagner en regardant les combinaisons au lieu des arrangement, ça permet de gagner un facteur n! lié au nombre de permutations.

Je suis passé à une exploration systématique mais en utilisant la distribution des cartes et donc les résultats possibles plutôt que les tirages de carte. Je pondère le tout par la probabilité de tirer les cartes. Ainsi, pour le premier tirage, au lieu de faire 45 possibilités, je n'en regarde que 9 avec chacune un poids donné.

Pour 6 cartes,
  1. la force brute tirage de carte sans permutations : 5 864 443 200 possibilités
  2. force brute tirage de carte avec permutations : 8 145 060 possibilités
  3. force brute probabilité de tirage 531 441 possibilités
  4. probabilité de tirage+optimisation 381 023 possibilités

Entre l'option 1 et 4, il y a un facteur 15 000 sur le nombre de possibilités à tester !
Entre l'option 2 et 4, il y a un facteur 21 sur le nombre de possibilités à tester
Entre l'option 3 et 4, il y a un facteur 1,4 sur le nombre de possibilités à tester

Après, même si mon algorithme n'est pas ultra optimisé pour minimiser le stockage de donné, le gain en temps reste très important (je suis passé de 4 minutes pour uniquement le tirage à 6 cartes à 4 secondes pour les tirages de 1 à 6 cartes.

EDIT : sur BGG quelqu'un a mis un script alternatif pour le calcul:
https://boardgamegeek.com/article/reply/27080723
Posté
Ce quelqu'un c'est moi, voici le script : https://codepen.io/pikiou/pen/VMrYxY?editors=0010
Il affiche le même format de tableau que page 13 en calculant les chances de réussite sur un nombre important de tirages aléatoires.
On peut modifier le code Javascript (TypeScript pour être exact) à la volée et les calculs sont refaits instantanément.
Libre à vous donc de modifier n'importe quel paramètre comme changer la liste des cartes.

L'algorithme est de complexité identique quelque soit le nombre de cartes piochées. Amusez-vous donc à agrandir le tableau pour voir ce qu'il est nécessaire de piocher pour obtenir 20 succès ^^
Posté
pikiou a écrit :
Ce quelqu'un c'est moi, voici le script : https://codepen.io/pikiou/pen/VMrYxY?editors=0010
Il affiche le même format de tableau que page 13 en calculant les chances de réussite sur un nombre important de tirages aléatoires.
On peut modifier le code Javascript (TypeScript pour être exact) à la volée et les calculs sont refaits instantanément.
Libre à vous donc de modifier n'importe quel paramètre comme changer la liste des cartes.

L'algorithme est de complexité identique quelque soit le nombre de cartes piochées. Amusez-vous donc à agrandir le tableau pour voir ce qu'il est nécessaire de piocher pour obtenir 20 succès ^^

Je n'ai pas bien compris comment tu génères les tirages de manière à ce qu'ils soient représentatifs. (ce que fait la fonction cardPickSimulation)

Car si j'ai bien compris tu fais un grand nombre de tirage de longueur n auquel tu donnes un poids proportionnel à leur probabilité ? (dans cette partie là où au début tu fais le tirage et après tu calcules le poids associé)
const results: string[][] = _.map(Array(maxSuccess), () => _.map(Array(maxCardPicks), "")); _.range(1, maxCardPicks + 1).forEach(drawnCardsCount => { const successGoals = cardPickSimulation(allCards, drawnCardsCount); successGoals.forEach((g, pos) => results[pos][drawnCardsCount - 1] = g + '%'); });
Posté
À la fonction cardPickSimulation tu donnes:
- la liste de toutes les cartes parmi lesquelles piocher
- le nombre de cartes à piocher

La fonction réitère plein de fois la procédure suivante :
1. piocher le nombre de cartes indiqué le temps de compter le nombre de succès obtenus grâce à ces cartes
2. incrémenter dans un tableau de 1 succès à 7 succès, les objectifs de succès remplis. Par exemple si j'ai eu 4 succès, j'incrémente les cases 1, 2, 3 et 4 succès du tableau.
Ensuite on divise chaque case du tableau par le fois qu'on a réitéré cette procédure, de sorte à obtenir un pourcentage de réussite.

Pardon d'avoir manqué de clarté dans l'écriture de mon code, si c'est le cas ! J'utilise pas mal lodash, un module qui simplifie la manipulation de tableaux et de collections.
Posté
7th continent, le jeu au multiples usages !

Vous pouvez explorer seul ou a plusieurs ce vaste continent plein de mystères et de pièges.
Vous pouvez aussi tenter de vous libérer des terribles malédictions.
Vous pouvez aussi passez des heures à étudier les obscures mécanismes de ce jeux dans le fol espoir d'espérer contrôler votre destin...

pauvres fous !!!!

Muhahahahahahahahahaha !!!
(rire hystéricosardonique de grand méchant de Scoubidou)
:icon_curse::action_eat::thumb_up: La Déesse Vorace :icon_curse::action_offer::thumb_up: L'Offrande Aux Gardiens :icon_curse::action_swim::thumb_up: Le Labyrinthe de Glace,
:icon_curse::action_fight::action_move::thumb_up: Le Marais de l'Epouvante + La Traque Sanguinaire terminé (un mort) :icon_curse::action_observe::thumb_up: Le Sanctuaire Interdit.
Posté
Bonjour explorateur en quête de mystère,

Voici les résultats exactes à partir de mon tableur pour jusqu'à 5 cartes piochés, à la fois le nombre d'étoiles et à la fois le nombre de symbole 7 : img [dropbox]

Et le tableau de ma reprise de partie en cours où mes probabilités ont nettement augmenté mais avec un deck d'Action bien mince, il faut que je parte à la chasse : img [dropbox]

Et maintenant, pour comparer les probabilités avec une partie à 4 joueurs : img [dropbox]. Et il se trouve que les proba pour les symboles 7 augmentent mais que pour les étoiles, une baisse de quelques points surtout sensible pour la pioche d'une carte.

Je repars à recherche d'un nouveau gibier...
[52h] DV :flag_curse_sm: :icon_curse: :icon_succes: - OG :flag_curse_sm: :icon_curse: - LG :flag_curse_sm: :icon_curse: - CD :flag_curse_sm: (en cours) - SI - TS - ME - T7C
Posté - Edité
Bonjour !

Je suis également un passionné par les chiffres :whistling:
et futur maudit, j'ai trouvé ce sujet très intéressant !
J'ai fini par faire un simulateur de tirage "brut force" jusqu'à 10 cartes (100 000 tirages), et ai calculé les probabilités de succès associées.
(en me basant sur les cartes deck de base, pas de compétences avancées).

Je me suis inspiré du tableau des règles pour sortir des jolies images, je les mets à disposition si certains veulent aussi s'imprimer ça...
Petit pincement au coeur de devoir arrondir toutes les probabilités à l'unité, mais ça donne une bonne idée quand même ! ;-)
(PS: j'ai supprimé les probas inférieures à 1%, sauf un par inattention indiqué à 0% :dizzy:)

Proba pour 1 joueur:
https://imgur.com/a/OPGZC

Proba pour 2 joueurs:
https://imgur.com/a/jYg8T

Proba pour 3 joueurs:
https://imgur.com/a/6ulCM

Proba pour 4 joueurs:
https://imgur.com/a/1MtG2

A+
Forums/ The 7th Continent/ Stratégies & Tactiques72 messages