#11601: "Verifier l'algorithme qui fait les chiens"
What is this report about?
What happened? Please select from below
What happened? Please select from below
Please check if there is already a report on the same subject
If yes, please VOTE for this report. Reports with the most votes are given PRIORITY!
# | Status | Votes | Game | Type | Title | Last update |
---|
Detailed description
• Please copy/paste the error message you see on your screen, if applicable.
• Please explain what you wanted to do, what you did and what happened
• Which browser are you using?
Safari v12
• Please copy/paste the text displayed in English instead of your language. If you have a screenshot of this bug (good practice), you can use Imgur.com to upload it and copy/paste the link here.
• Is this text available in the translation system? If yes, has it been translated for more than 24 hours?
• Which browser are you using?
Safari v12
• Please explain your suggestion precisely and concisely so that it's as easy as possible to understand what you mean.
• Which browser are you using?
Safari v12
• What was displayed on the screen when you were blocked (Blank screen? Part of the game interface? Error message?)
• Which browser are you using?
Safari v12
• Which part of the rules was not followed by the BGA adaptation
• Is the rules violation visible on game replay? If yes, at which move number?
• Which browser are you using?
Safari v12
• What was the game action you wanted to do?
• What did you try to do to trigger this game action?
• What happened when you tried to do this (error message, game status bar message, ...)?
• Which browser are you using?
Safari v12
• At which step of the game did the problem occur (what was the current game instruction)?
• What happened when you tried to do this game action (error message, game status bar message, ...)?
• Which browser are you using?
Safari v12
• Please describe the display issue. If you have a screenshot of this bug (good practice), you can use Imgur.com to upload it and copy/paste the link here.
• Which browser are you using?
Safari v12
• Please copy/paste the text displayed in English instead of your language. If you have a screenshot of this bug (good practice), you can use Imgur.com to upload it and copy/paste the link here.
• Is this text available in the translation system? If yes, has it been translated for more than 24 hours?
• Which browser are you using?
Safari v12
• Please explain your suggestion precisely and concisely so that it's as easy as possible to understand what you mean.
• Which browser are you using?
Safari v12
Report history
la probabilite d'un tel evenement est trop minime pour qu'elle puisse advenir.
Cela rend l'experience absolument frustrante.
L'ordre des cartes de la partie d'avant est-elle prise en compte?
La distribution des cartes dans BGA est réalisée comme suit :
-Regroupement de toutes les cartes issues des plis et de l'ancien chien ou des cartes défaussées
-Appel d'une fonction BGA pseudo-aléatoire pour mélanger les cartes
-Distribution des mains et constitution des chiens.
Il n'y a donc selon moi pas de biais qui pourrait jouer au delà du caractère "pseudo" qui est commun à tous les ordinateurs et donc tous les jeux sur BGA (le hasard n'est pas parfait mais est simulé très finement).
Je précise que ce n'est pas parce qu'un évènement est improbable qu'il ne surviendra jamais. Je pense que ce qui joue beaucoup aussi c'est qu'il est possible de jouer beaucoup plus de parties en peu de temps qu'avec un jeu de cartes physique. Cela maximise les chances de rencontrer de tels évènements normalement improbables (bouts dans le chien, rois dans le chien, misères, 3 bouts dans une même mains, etc.)
Merci !
Woodruff
Je veux bien entendre ça, mais ce phénomène de bouts dans le chien, c'est continuellement.
Hier et avant hier, ce soir dans 4 parties sur 6, ça modifie considérablement le jeu et le rend moins intéressant.
C'est un peu dommage, car pour le reste tout est impeccable comme d'habitude sur BGA.
Il faut savoir également que dans les concours de tarot officiels, le jeu est remélangé entre chaque donne.
@+
Laud91
Merci pour ton témoignage.
J'entends bien ton constat.
J'ai conçu le code de telle façon que le jeu est remélangé entre chaque donne, bien d'accord avec toi sur ce point, cela fait partie des règles FFT. Plus précisément, j'appelle une fonction qui prend tout le jeu de cartes et modifie aléatoirement l'ordre de tirage de toutes les cartes ; c'est comme ça que s'effectue le mélange de manière programmatique (fonction shuffle).
C'est vrai que je constate assez souvent des bouts dans le Chien, mais j'attribuais ça jusque là à la fréquence des donnes jouées sans me poser plus de question. Mais je note que selon toi le biais statistique est important et pas lié à ce que j'ai dit.
Donc, si ce biais existe, et sauf erreur de programmation de ma part (mais là, je ne vois pas), le problème se situe dans la fonction qui effectue le mélange (shuffle), mais je n'ai pas la main pour savoir comment elle est codée... Ce serait du ressort des admins du site.
Je t'invite à les contacter directement : gisabelli@boardgamearena.com et ecolin@boardgamearena.com ; pour ma part, je les embête un peu trop c'est derniers temps rapport au nombre de messages que je leur envoie donc ce ne serait pas de refus que tu les sollicites de ton côté !
Je reste attentif si une action est requise de ma part.
Désolé en tout cas, et bonnes parties !
A+
Woodruff
Merci de jouer sur BGA.
La fonction dont on parle est la fonction PHP suivante:
www.php.net/manual/fr/function.shuffle.php
Elle est très largement utilisée et - si elle ne convient pas pour des fonctions de type "cryptographique" - elle est tout à fait suffisante pour mélanger un jeu de carte de tarot.
Le mieux dans ce genre de cas est de faire les calculs de probabilité. Je ne suis pas joueur de Tarot mais si je comprend bien il y a 3 bouts, 6 cares dans le chien et 78 cartes au total, donc vous devriez pouvoir calculer la probabilité d'avoir cela. Si je rechercher rapidement (www.les-mathematiques.net/phorum/read.php?12,818025,818098) je trouve 21% de probabilité, donc 1 main sur 5. Il y a une centaine de parties par jour sur BGA, donc au moins 20 parties chaque jour avec cela, et du coup un évènement tel que celui décrit dans le bug doit arriver assez souvent.
Si vous voulez aller plus loin, je vous laisse faire les calculs exacts pour vérifier tout cela, et comparer avec l'occurence de l'événement, mais il me semble que tout ceci est très normal.
pourquoi vous m'appliquez la règle du tarot à savoir que goulash c'est pas dans le tarot et complètement obsolète et quand la partie ne fonctionne plus et pas quitté on n'est pénalisé alors que l'on veut jouer comme maintenant je suis dans un club et joue au tarot de 50 ans cordialement
Merci pour votre retour. Ce sujet s'éloigne du rapport initial.
Mais pour répondre à vos interrogations, la Goulash reste une option que l'on peut choisir ou non de paramétrer pour la table. Libre à vous de rejoindre ou de créer ce type de table pour jouer avec cette variante qui n'est effectivement pas officielle.
Les options marquées "règles officielles" sont celles à utiliser pour être compatible FFT ; ce sont celles proposées par défaut quand vous créez votre première table.
Dans le même registre, les Misères sont considérées obsolètes par la fédé, pourtant le choix est laissé de pouvoir les activer ou non selon les préférences des joueurs.
Si par ailleurs vous avez rencontré un bug qui vous a empêché de jouer (même après avoir rafraichi la page : F5), n'hésitez pas à poster un nouveau bug en décrivant les symptômes de manière à ce que je puisse trouver la cause du problème si elle est liée au jeu (parfois, c'est le site BGA lui même qui est surchargé...).
J'espère en tout cas avoir éclairci vos interrogations.
Bonne journée,
Woodruff
A l'instant, je sort d'une partie en arène (Table #63838797). Sur 6 manches, il y a eu 4 fois un bout au chien pour le preneur. Ça devient plus que pénible.
De mon point de vue de développeur du Tarot, si biais statistique il y a (et je suis de plus en plus enclin à le penser même si une véritable étude statistique doit être menée pour le prouver), je ne peux pas moi-même améliorer le système car j'utilise les fonctions de mélange standard fournies par BGA (faire un chien revient à prendre 3 ou 6 cartes dans un jeu mélangé, donc c'est la fonction de mélange qui concentre l'impératif de "bon" aléatoire).
Cf. le message ci-dessus de Sourisdudesert.
Pour ma part je ne peux donc pas faire mieux (et je n'ai pas les compétences pour, notamment en programmation ayant trait à l'aléatoire) même si ma volonté de faire bien est forte.
Woodruff
Je comprends très bien ton point de vue Wood, on en a déjà parlé ensemble.
Ça me rassure de voir que de plus en plus de gens remarquent ça.
Voici les probabilités d'avoir (au moins) 1 bout dans le chien en 6 parties:
0/6: 23,2%
1/6: 38,4%
2/6: 26,4%
3/6: 9,7%
4/6: 2,0%
5/6: 0,22%
6/6: 0,01%
2% n'est pas si rare. Une partie sur 50 (et beaucoup plus si vous êtes (pas?) chanceux).
Je suis dans l'obligation de constater la meme chose: à savoir que le chien comporte trop régulièrement un bout ou un roi. Mes amis et moi ne nous sommes jamais autant appelé nous -même. La probabilité de s'appeler lorsqu'on est 5 doit être relativement faible j'imagine, or sur les 10 derniers jours, cela est arrivé assez régulièrement. Je dois admettre qu'un chien avec quasiment systématiquement un bout ou un roi fausse un peu le plaisir du jeu.
Je pourrai éventuellement vous établir des statistiques sur les prochaines parties si cela peut vous aider à corriger ce problème.
En tout cas je vous remercie pour tout le travail que vous effectuez et le plaisir que vous nous apporter dans cette période un peu particulière.
Bon courage à vous!
Je partage complètement le constat réalisé autour de la distribution des cartes.
1 - Le chien compte très régulièrement un bout.
2 - La distribution des cartes fait la part belle à des constantes : tel joueur va avoir du jeu pendant la succession des manches alors que tel autre plafonnera en permanence avec des donnes ne lui permettant pas de faire d'annonce (avec un triptyque d'atouts assez habituel). À cinq, il est assez habituel que deux ou trois polarisent le jeu pendant que deux autres soient complètement passifs.
Je suis prêt également à m'intéresser aux fréquences pour vous faire partager des sondages statistiques.
j´ai consté cela également:
lorsqu´un joueuer appel un autre joueur, le joueur appelé a très souvent deux rois ou un bout, trop souvent me dit mon petit doigt.
Je suis moi meme programmeur. Si vous me montrer l´algorithme:
- je vous simule quelques millions de distributions et compare les resultats avec les statistiques theoriques.
- si il y a un écart par rapport aux prévisions statistiques, je vous montre ou est le probleme dans le code
sinon on publie l´analyse, faisant taire une fois pour toute les réclamations.
Personellement je pense que c´est très important pour le plaisir du jeu à long terme.
Très cordialement
Christophe
Je ne suis pas du tout un spécialiste du hasard et encore moins de son implémentation dans BGA. Je ne fais qu'appeler la méthode de mélange pourvue par BGA, elle même basée sur du PHP.
Tu es le premier à proposer une méthode calculatoire pour prouver ou non l'existence d'un biais, ce qui est tout à ton honneur. Beaucoup de personnes se contentent de critiquer le hasard sans preuve tangible ni proposition de méthode. Or la façon de voir le hasard étant soumis à pas mal de biais, il convient d'être prudent. Ne disposant pas moi-même des outils nécessaires, je ne me prononce pas et reste dans la ligne de BGA. Mais je reste en première ligne pour ce genre de critique, et j'en suis fatigué...
Il est possible d'accéder au code de la plupart des jeux sur BGA, pour cela il faut créer un compte sur BGA Studio et demander l'accès en lecture.
Plus d'information ici : studio.boardgamearena.com/
En cas de souci n'hésite pas à me contacter.
Le billet l'équipe BGA à ce sujet : boardgamearena.com/faq?anchor=faq_playing_random
Merci beaucoup.
Woodruff
merci pour cette rapide réponse, et merci aussi pour le jeu de tarot qu´on adore.
Comme tu l´as conseillé je me suis inscrit en tant que développeur.
J´ai pu constaté que la fonction de BGA 'shuffle' est utilisé pour distribuer les cartes.
J´ai pu également créer un jeu et je pense pouvoir analyser la donne des cartes.
Très vraisemblablement le résultat confirmera une simulation correcte du hasard.
Mon seul problème actuellement, c´est le temp libre. Je transmet donc les résultats dans quelques jours.
Une question subsidiare: est-il possible d´accéder au code de la fonction shuffle de BGA ou c´est secret défense? (si non je comprends tout à fais pourquoi...)
@bientot
Christophe
À propos du shuffle, il s'agit à priori d'un code propriétaire du framework BGA auquel un développeur "standard" n'a pas accès.
Tu pourras cependant lire certains détails dans la doc : fr.studio.boardgamearena.com/doc/Main_game_logic:_yourgamename.game.php, section "About random and randomness".
"shuffle and cards shuffling
To shuffle items, like a pile of cards, the best way is to use the BGA PHP Deck component and to use "shuffle" method. This ensures that the best available shuffling method is used, and that if in the future we improve it your game will be up to date.
As of now, the Deck component shuffle method is based on PHP "shuffle" method, which has quite good randomness (even it is not as good as bga_rand). In consequence, we accept other shuffling methods during reviews, as long as they are based on PHP "shuffle" function (or similar, like "array_rand")."
Tu peux toujours essayer de demander à Sourisdudesert et Een des précisions si jamais ils sont enclins à en donner...
Bonne quête,
Wood
j´ai pu effectuer des mesures et les comparer objectivement et scientifiquement avec celles attendues en théorie.
L´analyse porte sur 20000 (vingt mille) donnes, ce qui est plus que suffisant pour ce genre d´analyse.
Résultat: les mesures coincident tout à fait avec la théorie.
J`espère pouvoir ainsi clore le débat: le hasard chez BGA est très bien géré !
Ci-dessous les résultats détaillés et la méthodique utilisée.
Cordialement,
Christophe
=========================================================================
ANALYSE COMBINATOIRE
Pour plus de détails sur l´analyse combinatoire pour un calcul de probabilité de tirage sans remise:
www.dcode.fr/probabilites-tirage
Attention:sur internet on trouve pas mal de statistiques de tarot légèrement erronées, du fait d´arrondissement très cerainement.
Les statistiques ici présentées sont, sauf erreur de ma part, calculés avec plus de précision.
=========================================================================
MESURE EFFECTUÉES
sur 20000 (vingt mille) donnes le 14.03.2021.
Probabilité de bouts sous le chien à 5 joueurs:
1 bouts
Theorie : 10.943004364056995636%
Mesuré : 10,945%
2 bouts:
Theorie : 0.29575687470424312530%
Mesuré : 0,365%
3 bouts
Theorie : 0.0013144749986855250013%
Mesuré : 0%
=========================================================================
EN DETAILS:
- 1 bout: 10,945%
1 fois 2%
2 fois 3%
2 fois 4%
5 fois 5%
6 fois 6%
8 fois 7%
22 fois 8%
20 fois 9%
28 fois 10%
15 fois 11%
28 fois 12%
19 fois 13%
22 fois 14%
6 fois 15%
8 fois 16%
3 fois 17%
2 fois 18%
1 fois 19%
2 fois 20%
- 2 bouts: 0,365%
57 fois 1%
8 fois 2%57+
- 3 bout: 0%
=========================================================================
METHODIQUE
1. Dans le fichier xxx.game.php, dans la fonction "stNewHand" (ou les cartes sont normalement distribuées)
j´ai modifié le code pour effectuer 100 donnes (à la place d´une seule)
et calculé le nombre de parties avec 1, 2 et 3 bouts sous le chien.
Remarques:
- Le résultat est envoyé en notification à tous les joueurs (historique sur la droite de l´interface).
- À plus de 100 donnes, le calcul dure trop longtemps et on obtient souvent un timeout.
Le test a donc été répété 200 fois et les résultats fusionnés: 200* 100 = 20000 donnes.
Ci-dessous le code:
function stNewHand()
{
// [some code not relevant to the test]
$oneOudler = 0;
$twoOudlers = 0;
$threeOudlers = 0;
for($gameIndex = 0; $gameIndex < 100; $gameIndex++)
{
// Take back all cards to deck and deal with the BGA-function called "shuffle"
$this->cards->moveAllCardsInLocation(null, "deck");
$this->cards->shuffle('deck');
$oudlersCount = 3;
foreach($players as $player_id => $player)
{
$player_hand = $this->cards->pickCards(self::getGameStateValue('card_number_for_each_player'), 'deck', $player_id );
foreach($player_hand as $card)
{
if ($card['type'] == 5 && ($card['type_arg'] == 1 || $card['type_arg'] > 20))
{
--$oudlersCount; // oudler found
}
}
}
switch ($oudlersCount)
{
case 1:
++$oneOudler;
break;
case 2:
++$twoOudlers;
break;
case 3:
++$threeOudlers;
break;
}
// Change dealer is not necessary for this analysis.
//self::changeDealerAndFirstPlayer();
}
self::notifyPlayer($player_id, 'Stats bouts au chien sur 100 donnes:', "1: $oneOudler% / 2: $twoOudlers% / 3: $threeOudlers%", array());
// [some code not relevant to the test]
}
=========================================================================
Un très grand merci pour cette analyse !
Avec ta permission, je vais faire référence à ce post dans le forum, cela sera grandement utile pour limiter les conversations stériles...
Du coup, je passe le ticket en implémenté, vu que techniquement tu as fait la vérification ; il n'y a rien à changer dans le code ;)
Petite question : je n'ai simplement pas compris à quoi correspond le détail et les pourcentages ?
"EN DETAILS:
- 1 bout: 10,945%
1 fois 2%
2 fois 3%
etc."
Intuitivement, cela m'aurait effectivement choqué qu'il y ait des écarts significatifs, après tout, d'un point de vue informatique, les trois couples (Atout, 1), (Atout, 21), (Atout, Excuse) ne sont que des "valeurs ordinaires" parmi les 78 qui existent...
Encore merci :D
oui tu peux volontier référencer le post.
Les probabilités sont très souvent contre-intuitives et les erreurs de programations existent.
D´ou l´importance de ce test.
@+ sur BGA
Christophe
============
Pour répondre à ta question sur le détails:
- il y a eu 200 mesures, chaque mesure comprenant 100 donnes
- le résultat final aurait suffit, mais je tenais aussi à détailler les mesures en elles-memes.
Par exemple:
- mesure nr. 098: sur 100 donnes il y avait 2 donnes avec un bout sous le chien
- mesure nr. 157: sur 100 donnes il y avait 2 donnes avec un bout sous le chien
- mesure nr. 146: sur 100 donnes il y avait 3 donnes avec un bout sous le chien
ce qui nous fait:
- 2 mesures avec 2 %
- 1 mesure avec 3%
etc...
La moyennes de ces 200 mesures étant: 10,945%.
cqfd :)
- 2 bouts: 0,365%
en détails:
57 fois 1%
8 fois 2%
135 fois 0%
Une constante, souvent quand les chiens sont pauvre, ils le restent toute la partie et quand ils sont riches, ils le sont sur la quasi totalité des chiens.
Je constate le même soucis sur les parties d'arène à 4 joueurs, la présence de bouts au chien est très fréquente. Par exemple, sur cette table #370420163 , il y a eu une très grande majorité de donnes avec des bouts au chien.
Le problème est que nous en arrivons à un point où cela impacte la prise de décision, certains joueurs semblent maintenant prendre la décision d'enchérir sans bouts, en se disant "bah, il y en a quasiment toujours un au chien", et cela fonctionne !!
J'ai lu attentivement l'intégralité du sujet, et je vois que plusieurs analyses très poussées et complètes ont été faites, notamment par el pulpo dino. Chapeau-bas pour ce beau travail !
Je me permets donc de soulever le questionnement suivant : L'analyse porte-t-elle uniquement sur le jeu à 5 ? Car lors de mes parties d'arène à 5 (précédentes saisons), la fréquence des bouts au chien (ou roi) ne m'a pas choqué. En revanche à 4, je trouve cela flagrant pour le bouts (pas les rois).
L'implémentation du code est-elle la même à 4 ou à 5 ? La fonction shuffle évoquée pourrait-elle être moins pertinente à 4 ? Et surtout une analyse a-t-elle été faite sur les donnes à 4 joueurs ? Si non, je pense qu'il serait nécessaire de vérifier.
Étant moi-même ingénieur en informatique, je comprends au moins en théorie ce qui a été fait. Je n'ai pas tous les éléments en main pour comprendre dans le détail, mais il me semble que les vérifications nécessaires ont été plus que faites, et bien faites.
Aussi, si la conclusion est "l'analyse à 4 a été faite et les statistiques ne soulèvent pas d'anomalie", je l'accepterai bien volontiers
Néanmoins, cette présence de bouts dans les jeux à 4 me semble vraiment étonnante. Sur les parties que j'ai faites au court de cette saison d'arène, je n'ai pas fait de statistiques, mais il est évident que la présence d'un bout au chien est très largement supérieure à 10,9%, puisque cela arrive dans la majorité des donnes.
Voilà, j'espère que ce retour aura permis de procéder à une vérification supplémentaire sur le jeu à 4, si toutefois celle-ci n'a pas déjà été faite.
Merci encore à Woodruff pour cette superbe implémentation du jeu et à tous cexu qui ont pris le temps d'analyser ce sujet complexe !
En effet, le ressenti d'un joueur ne dépend que de ce qu'il a vu.
Combien de donnes n'ont PAS été jouées, alors que le chien n'avait pas de chien ?
Combien de donnes ONT été jouées en petite, avec 4 joueurs qui passent ... rendant du coup le chien bien plus attractif.
Les proba pures ne servent pas à grand chose ici si on ne tient pas compte de cela.
A moins d'avoir un visuel systématique des parties non jouées, je ne vois pas comment on peut remettre en question la fonction qui tire des cartes aléatoirement.
Add to this report
- Another table ID / move ID
- Did F5 solve the problem?
- Did the problem appear several times? Every time? Randomly?
- If you have a screenshot of this bug (good practice), you can use Imgur.com to upload it and copy/paste the link here.