Question

Je suis en train de coder un jeu de société où il y a un sac de pièces possibles. À chaque tour, les joueurs retirent du sac des pièces sélectionnées au hasard, selon certaines règles.

Pour ma mise en œuvre, il peut être plus facile de diviser le sac initialement en pools pour un ou plusieurs joueurs. Ces groupes seraient sélectionnés au hasard, mais différents joueurs choisiraient désormais différents sacs. Est-ce différent?

Si le sac d’un joueur venait à manquer, d’autres seraient mélangés au hasard dans le stock général.

Était-ce utile?

La solution

Tant que:

  • la partition en " pool " sacs est aléatoire
  • l'attribution des joueurs à un pool donné est aléatoire
  • le jeu est tel que les objets dessinés par les joueurs sont effectivement retirés du sac (jamais remis dans le sac ou dans un autre sac pendant la durée du jeu en cours)
  • les joueurs ne sont pas au courant du contenu de aucun des sacs

Les deux approches ("originale" avec un grand sac commun, "modifiée" avec un sac de pool par joueur sont équivalentes en ce qui concerne les probabilités.

Cela devient un peu délicat vers la fin du jeu, lorsque certains sacs des joueurs sont vides. Il est préférable de laisser choisir parmi 100% des objets encore en jeu. Ils doivent donc choisir leur sac dans le sac choisi et choisir [à l'aveuglette] un article de ce sac.

Ce problème illustre une caractéristique intéressante des probabilités, à savoir que les probabilités sont relatives à la quantité de connaissances dont on dispose sur la situation . Par exemple, l'hôte du jeu peut savoir que le & pool; pool " le sac assigné pour dire que le joueur X n’inclut aucune parole Lettre " A " (pensant au scrabble), mais tant que les joueurs ne le savent pas (et tant que les partitions dans le sac de la piscine étaient complètement aléatoires), le jeu reste juste, et le joueur "X". doit encore assumer que son / probablement de frapper un "A" la prochaine fois qu'une lettre est tirée, est identique à celle que toutes les lettres restantes étaient à sa disposition.

Modifier:
Nonobstant la validité mathématique de l’affirmation selon laquelle les deux procédures sont totalement équivalentes, la perception est un facteur important dans les jeux qui incluent une composante de hasard (en particulier si le jeu comporte également une composante pécuniaire). Pour éviter la colère des joueurs qui ne comprennent pas cette équité, vous pouvez vous en tenir à la procédure originale ...

Autres conseils

En fonction des règles du jeu, @mjv a raison, la division aléatoire initiale n’affecte pas les probabilités. Ceci est analogue à un jeu dans lequel n joueurs tirent les cartes tour à tour à partir d’un jeu face cachée: le premier brassage du jeu correspond à la division aléatoire des "sacs". de cartes pour chaque joueur.

Mais si vous remplacez les articles après chaque tirage au sort, le fait qu’il y ait un sac ou plusieurs importe peu. Avec un sac, n'importe quel objet sera finalement tiré par un joueur avec la même probabilité. Avec beaucoup de sacs, cet objet ne peut être tiré que par le joueur avec lequel il a été placé.

Pour passer au niveau logiciel, si le jeu ne nécessite qu'un seul sac, je vous recommande de le programmer de cette façon: il ne devrait pas être plus difficile que n sacs, et vous n'avez pas à prouver le nouveau jeu. équivalent à l'ancien.

Mon intuition me dit que diviser une collection de choses au hasard en sous-ensembles aléatoires plus petits resterait tout aussi aléatoire ... peu importe si un joueur choisit dans un grand pool ou dans un plus petit le grand)

Pour un jeu, il suffit assez IMHO aléatoire!

En fonction de l’importance cruciale de la sécurité, cela pourrait aller (si de l’argent est en jeu (vous ou eux, ne le faites pas)). Je ne suis pas tout à fait sûr que ce serait moins aléatoire du point de vue d'un joueur ignorant.

a) Ne comptez pas sur eux pour qu’ils soient ignorants, votre programme pourrait être fissuré et ils sauraient alors quels éléments sont à venir

b) Il serait très difficile de remplir les sacs de manière à ne pas introduire de vulnérabilités. Par exemple, prenons l'algorithme naïf qui consiste à en choisir un au hasard et à le placer dans le premier compartiment, à le retirer, puis à procéder de la même manière pour le deuxième compartiment, etc. Vous venez de vous assurer que s’il y avait N pièces, le premier joueur avait une probabilité de 1 / N de choisir une pièce donnée, le deuxième joueur avait un 1 / (N-1), le troisième avait 1 / (N-3) et bientôt. Les joueurs peuvent ensuite analyser les pièces déjà jouées afin de déterminer les probabilités que d'autres joueurs tiennent certaines pièces.

Je PENSE , l'algorithme suivant pourrait mieux fonctionner, mais presque toutes les personnes se trompent de probabilité la première fois qu'elles proposent un nouvel algorithme. N'UTILISEZ PAS CELA, sachez simplement que cela pourrait couvrir la faille de sécurité dont j'ai parlé:

  1. Créez une liste de N éléments ordonnés et instanciez les lecteurs P
  2. Marquez 1 / P des objets au hasard (avec remplacement) pour chaque joueur
  3. Répétez cette opération jusqu'à ce que tous les N éléments soient marqués et qu'il y ait une égalité. nombre d'éléments marqués pour chaque joueur (REMARQUE: la durée peut être beaucoup plus longue que celle que vous vivez, en fonction de N et de P)
  4. Placez les éléments appropriés dans le compartiment du lecteur et réorganisez-les au hasard (n'utilisez PAS d'algorithme d'échange de lieu)

Même après cela, vous pourriez toujours être vulnérable à l'idée de trouver ce qui se trouve dans le sien d'un exploit. Tenez-vous avec une piscine combinée, il est toujours difficile de choisir vraiment au hasard, mais cela vous facilitera la vie.

Edit: Je sais que le ton est plutôt saccadé. J'ai surtout inclus tout ce qui était audacieux pour ceux qui liraient cela hors contexte et essayeraient certains de ces algorithmes. Je vous souhaite vraiment bonne chance :-)

Edit 2: Après réflexion, je pense que le problème de la sélection dans l’ordre pourrait réduire le fait que les joueurs jouent à tour de rôle. Si cela figure déjà dans les règles, cela n’aura peut-être pas d'importance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top