27 votes

Quelle est la manière idéale d'émuler un jeu de dés complet en utilisant un seul d20 ?

Imaginez que vous êtes piégé dans un monde post-apocalyptique et que vous n'avez qu'un seul d20 à votre disposition, rien d'autre. Quelle est la manière idéale d'émuler tous les autres types de dés courants (d4, d6, d8, d10, d12, d%) en utilisant uniquement ce d20 et des mathématiques arbitrairement compliquées ?

Je me rends compte qu'il y a un moyen facile de le faire avec un seul d6 (en utilisant le même d6 pour une mécanique de type pièce de monnaie), mais je me demandais si cela fonctionne aussi avec un d20, et quels sont les critères pour que cela fonctionne avec un dN, s'il y a des recherches sur le sujet.

Permettez-moi, en guise de préambule, de définir quelques points de repère :

" idéal " = le moins de jets de d20 possible.

" émulant "Il s'agit de faire correspondre les résultats d'un ou de plusieurs jets de d20 au dé que vous souhaitez émuler, tout en maintenant la précision statistique - chaque résultat possible pour le dé souhaité doit avoir la même probabilité.

" à la carte " un nombre X à un intervalle [1 ; B] signifie appliquer une opération de la forme suivante :

$$ dB = X - B \times \textbf {int} \left [ \frac {X - 1}{B} \right ] $$

où le int L'opération [] demande un arrondi vers le bas (troncature, puisque l'argument ne sera jamais négatif pour le problème donné).

Voici ce que j'ai jusqu'à présent, par ordre de complexité :

Rouleau simple \$X\$ : d10 \= \$[X]\$ si \$[X \leq 10]\$ sinon : \$[X - 10]\$

Rouleau simple \$X\$ : d% est équivalent à d10.

Rouleau simple \$X\$ : \$ \textbf {d4} = X - 4 \times \textbf {int} \left [ \displaystyle { \frac {X - 1}{ 4}} \right ]\$

Deux rouleaux \$X\$ , \$Y\$ : d8 \= \$[X]\$ si \$[X \leq 8]\$ ou \$[X - 8]\$ si \$[9 \leq X \leq 16]\$ . Par ailleurs, pour \$[X > 16]\$ , d8 \= \$[Y]\$ si \$[Y \leq 8]\$ ou \$[Y - 8]\$ si \$[9 \leq Y \leq 16]\$ . Par ailleurs, si les deux \$[X > 16]\$ y \$[Y > 16]\$ , d8 \= \$[X - 16]\$ si \$[X+Y]\$. \= pair, autre : \$[X - 12]\$ .

Trois+ rouleaux \$X\$ , \$Y\$ , \$Z\$ : \$ \textbf {X - 6 \times \textbf {int} \left [ \displaystyle { \frac {X - 1}{6}} \right ]\$ si \$[X \leq 18]\$ . Si ce n'est pas le cas, vérifiez la même chose pour \$Y\$ . Si ce n'est pas le cas, vérifiez la même chose pour \$Z\$ . Si \$ \left\ {X, Y, Z \right\ }\$ sur \$ \left\ {19, 20 \right\ }\$ (qui a 1/1000 de chance de se produire), mappez la combinaison à \$[1;6]\$ . Cependant, je ne pense pas qu'il soit possible d'obtenir cette cartographie de manière fiable, même en ajoutant de plus en plus de jets de dés. Bien sûr, cela deviendra rapidement très improbable, mais il ne semble pas y avoir de moyen fiable d'utiliser des valeurs binaires pour obtenir 6 de manière fiable, étant donné que c'est un produit de deux nombres premiers. Quel est le plus petit nombre de lancers de dés nécessaire pour obtenir un résultat à 100%, si tant est que cela soit possible ?

Le même problème se pose pour le d12 qui peut être construit de manière triviale à partir d'une d6 en roulant un d20 comme un tirage à pile ou face, puis soit en utilisant la valeur initiale d6 ou d6 +Toutefois, ce n'est peut-être pas la solution idéale.

Je vous serais reconnaissant de bien vouloir me donner votre avis sur la question, car cela m'occupe l'esprit depuis un certain temps déjà. Je suis à peu près sûr qu'il n'est pas possible de faire cela de manière fiable pour la d6 y d12 mais j'apprécierais toute forme de conclusion ou de preuve que vous pourriez fournir !

36voto

LadybugCrystal Points 11

Emuler un d6 en utilisant un nombre fixe de jets de d20 est impossible.

Bien sûr, comme le souligne l'autre réponse, il est possible de le faire si l'on prend en compte d'autres éléments que le seul résultat laminé, comme son orientation, mais ignorons cela pour l'instant.

Vous dites, à juste titre, que nous pouvons émuler un d6 avec un d20 en faisant correspondre 1-18 au d6 et en relançant sur 19 ou 20. Cela fonctionne, mais cela pourrait en théorie durer indéfiniment si nous continuons à obtenir des résultats supérieurs à 18.

Alors, pourquoi est-ce impossible ? Comme vous l'avez dit, cela a quelque chose à voir avec la factorisation. Un d6 est impossible à créer avec un d20 non pas parce qu'il est le produit de deux nombres premiers, mais plutôt parce qu'il possède un facteur premier qui n'est pas présent dans la factorisation première de 20. Tout d'abord, notez que la raison pour laquelle nous ne pouvons pas émuler un d6 avec un seul d20 est parce que 20 n'est pas divisible par 6. Maintenant, la factorisation première de 6 est \$2 \times 3\$ et celui de 20 est \$2^2 \times 5\$ . Si nous roulons \$n\$ d20, cela donne un total de \$20^n\$ possibilités. Parce que la multiplication revient à additionner les facteurs premiers, \$20^n\$ aura \$n\$ fois les facteurs :

$$ 20^n = 2^{2n} \times 5^n $$

C'est-à-dire que, quel que soit le nombre de fois où nous lançons un d20, le nombre total de résultats possibles n'aura jamais un facteur premier autre que 2 ou 5, et ne sera donc jamais divisible par 3. Comme tous les résultats sont également probables, il n'y a donc aucun moyen de répartir ces résultats sur les faces d'un d6 de telle sorte que les 6 possibilités soient également probables.

Plus généralement, un dX peut émuler un dY si et seulement si X a tous les facteurs premiers que Y a. Ainsi, un d20 ne peut pas émuler un d3, d6, d12 ou d35, mais il peut émuler un d8, d10 ou d4294967296.

Exemple d'émulation d'un d8 avec un d20

Si nous souhaitons émuler un d8 avec un d20, nous devons d'abord noter que 20 n'est pas divisible par 8, car 8 a trois 2 dans sa factorisation première, et 20 n'en a que deux. Cependant, \$20^2\$ a une factorisation \$2^4 \times 5^2\$ qui englobe la factorisation première de 8, et nous n'avons donc besoin que de deux jets de d20.

Maintenant, tout ce dont nous avions besoin pour l'un de ces jets était un simple facteur 2, donc nous pouvons utiliser l'un d'eux comme un tirage au sort. Par conséquent, nous pouvons lancer le premier d20 et s'il tombe sur la moitié supérieure (11-20), nous prenons quelque chose de la moitié supérieure du d8 (5-8), et de même pour la moitié inférieure (1-10) -> (1-4). Il ne nous reste plus qu'à diviser l'autre d20 en quatre catégories : (1-5) -> (1 ou 5) ; (6-10) -> (2 ou 6) et ainsi de suite.

Notez que ce n'est qu'un exemple, et qu'il existe de nombreuses façons d'émuler un d8 avec deux d20. Tout ce que vous avez à faire est de vous assurer que sur les 400 possibilités avec deux d20 séquentiels, 50 de ces possibilités sont attribuées à chacun des 8 numéros cibles, ce qui équivaut à couper l'espace en deux de manière égale trois fois au total.

25voto

Thomas Markov Points 98792

Un icosaèdre a 12 sommets.

Puisqu'un icosaèdre a 12 sommets, tout ce dont nous avons besoin est une méthode pour identifier le sommet qui correspond à un résultat particulier.

Orientation

Chaque face d'un d20 est un triangle, nous pouvons donc facilement déterminer quel sommet est le résultat en fonction de son orientation par rapport à nous. Il suffit de prendre le sommet qui est le plus éloigné ou "en haut" comme sommet résultant. Si deux sommets sont en haut, prenez celui du bas. Ce n'est peut-être pas parfait, il faudra faire preuve d'un peu de discernement, mais le résultat devrait être assez clair à chaque fois. Pour atténuer cela, nous pouvons fabriquer un plateau de dés avec des lignes tracées pour nous aider à faire ce jugement.

Détermination du résultat

Il ne nous reste plus qu'à déterminer le résultat. Ce sera un peu fastidieux, mais nous pouvons y arriver en écrivant et en consultant le tableau suivant. J'ai construit cette table en me basant sur un de mes d20, mais vous pouvez construire la vôtre si elle est différente, elle fonctionnera quand même.

Une fois que vous avez choisi votre sommet, faites correspondre les faces correspondantes du sommet à la colonne la plus à gauche de la table pour obtenir votre résultat d12. Un résultat d6 est obtenu en divisant le résultat d12 par 2 et en arrondissant au supérieur. $$ \begin {array}{|c||c|} \hline \text {Résultat} & \text {Faces de vertices} \\\hline 1&1,5,7,13,15 \\\hline 2&1,3,7,17,19 \\\hline 3&1,9,11,13,19 \\\hline 4&2,8,10,12,20 \\\hline 5&2,4,14,18,20 \\\hline 6&2,5,12,15,18 \\\hline 7&3,6,9,16,19 \\\hline 8&3,8,10,16,17 \\\hline 9&4,6,9,11,14 \\\hline 10&4,5,11,13,18 \\\hline 11&6,8,14,16,20 \\\hline 12&7,10,12,15,18 \\\hline \end {array}$$

Exemple 1

J'ai donc lancé un d20 sur une de mes feuilles de personnage à DnDBeyond. Voici le résultat :

enter image description here

Il est facile de voir quel sommet est "en haut", donc ce sommet correspond à {6,8,14,16,20}, ce qui nous donne un résultat de 11 sur la table.

Exemple 2

Voici un résultat où il n'y a pas de sommet clair "en haut" :

enter image description here

Ici nous choisissons le sommet du bas, qui a les faces {4,5,11,13,18} ce qui donne un résultat de 10 sur notre tableau.

Le d8.

Pour le d8, convertissez d'abord votre jet en d4 par 1+(d20 modulo 4). Ensuite, si le sommet en haut du numéro de résultat est éloigné de vous, ajoutez 4, sinon gardez le résultat d4.

L'utilisateur Rayllum a trouvé cette solution et me l'a d'abord communiquée dans le chat. Il l'a depuis incluse dans sa réponse aquí et ont présenté d'autres solutions au problème aquí . Allez donner un peu d'amour à ses réponses.

17voto

Rayllum Points 608

Pour mettre en œuvre directement un d6 ou un d12, vous pouvez augmenter votre d20 à un d60, en utilisant le fait que

Chaque face d'un d20 standard possède 3 sommets distincts.

Si l'on regarde un exemple de visage, on voit que le nombre définit la direction "haut", ainsi que "gauche" et "droite" :

Two triangles (left and right). The left triangle displays a 5 in the middle and the corners are denoted "up", "left" and "right". The right triangle is a rotated version of the left triangle

Par conséquent, les trois sommets d'une face peuvent être décrits distinctement comme "sommet supérieur", "sommet gauche" et "sommet droit".

Après avoir lancé le dé, vous regardez non seulement le nombre obtenu, mais aussi lequel des trois sommets est le plus éloigné de vous.

  • Si le "sommet supérieur" est le plus éloigné de vous, utilisez le numéro roulé tel quel.
  • Si le "sommet droit" est le plus éloigné de vous, ajoutez 20 au chiffre obtenu.
  • Si le "sommet gauche" est le plus éloigné de vous, ajoutez 40 au chiffre obtenu.

Alors, de facto, vous avez un d60. Cela permet une implémentation directe d'un d12 (en divisant les nombres 1-60 en 12 partitions de même taille).

Ou bien, en utilisant la formule de la question :

Rouleau simple \$X\$ : \$ \textbf {d12} = X - 12 \times \textbf {int} \left [ \displaystyle { \frac {X - 1}{ 12}} \right ]\$

De même pour les autres facteurs de 60, par exemple 6, 15, 30.


Merci à Thomas Markov y Someone_Evil pour leurs contributions à cette réponse.

13voto

En mettant le d20 dans votre poche

Vous n'avez pas besoin d'un dé pour émuler un dé. Demandez au MJ de choisir secrètement un nombre entier. Demandez au joueur qui lance le dé de déclarer un autre nombre entier. Additionnez les deux, puis prenez le modulo de cette somme par la taille du dé à émuler.

Je fais cela depuis des années car je suis pauvre et je n'ai pas toujours eu internet jusqu'à récemment. Bien qu'il faille un peu de temps aux nouveaux joueurs pour apprendre à bien choisir les numéros (cf. Comment gagner à Roche Papier Ciseaux ), au fil du temps, le jeu se rapproche assez bien d'un dé juste, et il ne faut jamais qu'un seul "jet".

12voto

Rayllum Points 608

En théorie, vous pouvez simuler n'importe quel dé si vous

Pensez à votre d20 comme à une boussole.

L'idée est de diviser \$360^ \circ\ $ en N parties égales et laisser le "compas" sélectionner une partie. (De la même façon qu'une toupie Twister).

Pour simuler un dN, vous lancez le dé et ignorez la valeur du nombre obtenu. A la place, vous regardez où le "sommet supérieur" 1 pointe vers. Ensuite, prenez l'angle \$ \alpha \$ entre la direction "vers vous" et votre direction "coin supérieur". Par exemple, si le "coin supérieur" pointe dans la direction opposée à la vôtre, alors \$ \alpha = 180^ \circ\ $ ; si le "coin supérieur" pointe vers votre droite, alors \$ \alpha = 270^ \circ\ $ .

Pour exactement un entier \$ X \$ vous avez \$(X-1) \cdot \frac {360^ \circ } N \leq \alpha < X \cdot \frac {360^ \circ } N\$ . Ce \$ X \$ est votre numéro "roulé".

Par exemple, si \$ N=4\$ alors tout rouleau dont la direction du "sommet supérieur" est la suivante \$ \alpha\ $ où \$1 \cdot 90^ \circ \leq \alpha < 2 \cdot 90^ \circ \$ Le résultat est le nombre "roulé". \$ 2 \$ .


Bien que cette approche soit très théorique et, en pratique, difficilement applicable pour les grandes entreprises, elle n'a pas été retenue. \$ N\$ il peut être utilisé en pratique pour

Lancez le d8 en une seule fois

Lancez le d20 et utilisez le nombre obtenu comme on le ferait pour un d4. Ensuite, si le coin supérieur vous fait face (50% de chances), ajoutez 4.

Généralisé : Pour simuler un dN avec un d20, calculer le plus grand diviseur commun : \g = pgcd(N, 20)\$ . Alors (si \$g < N\$ ), appliquer la méthode du compas pour obtenir un d \$ \frac N g \$ dés. Utilisez le nombre obtenu sur le d20 pour simuler un d \$ g\$ .

En combinant le d \$ \frac N g \$ et le d \$ g\$ donne un d \$ N\$

1 Voir mon autre réponse pour la définition de "sommet supérieur".

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X