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 !

9voto

Nij Points 3377

Résumé :

  • Lancer et écarter en moyenne moins de 2 d20 pour tout autre dé, même d12. C'est bon pour le temps et le critère énoncé du nombre de lancers.
  • Diviser et arrondir est plus facile que de travailler sur votre formule, et peut-être plus facile que d'effectuer une opération de type modulo qui est équivalente à votre formule, sauf pour d10 où il suffit de prendre le dernier chiffre. C'est plus idéal pour temps le même nombre de rouleaux.
  • l'idée de @superb rain dans les commentaires qui n'a pas encore été intégré dans cette réponse, sauf pour d4 : souvent, un joueur doit lancer plusieurs d6 ou d8 (ou d12) dans le même tour. . Un simple d20 peut nous donner un d8 et un résultat d2 sans corrélation, par exemple, nous permettant d'enchaîner les jets en nous donnant un résultat d8 et un reste d'entropie. Avec des mathématiques astucieuses, nous pouvons même réduire le nombre de jets de d20 par d8 en dessous de 1 lors de jets multiples de d8. Si quelqu'un veut écrire ceci comme une nouvelle réponse, j'en ferai un lien ici.

L'élimination d'échantillons aléatoires est le moyen standard d'éviter les biais lors de la création d'une distribution uniforme à partir d'un RNG qui génère une plage plus large que celle que vous souhaitez, et la plage n'est pas un multiple exact. 1 . C'est simple, facile à retenir et à comprendre, et probablement rapide à mettre en pratique.

Mais de combien de rouleaux aurons-nous besoin en moyenne avec la méthode simple de relance, par exemple en écartant 19 et 20 lorsqu'on essaie de lancer un d6 ? Nombre attendu de relances pour un échantillonnage simple, se défausser et relancer 2 numéros sur 20 pour un d6 (20 mod 6=2), 4 sur 20 pour un d8 (20%8=4), 8 sur 20 pour un d12 (20%12=8).

  • d4 : 1.0
  • d6 : sum((2/20)^n, n=0..inf) = 1.11111...
  • d8 : sum((4/20)^n, n=0..inf) = 1.25
  • d10 : 1.0
  • d12 : sum((8/20)^n, n=0..inf) = 1.6666...

Ils sont tous inférieurs à 2, même pour le d12. Toute méthode qui toujours lance 2 dés est en moyenne plus de jet que de rebelote. Dans le pire des cas pour les relances (d12), vous n'avez pas à faire de maths (il suffit de prendre le résultat 1..12 du d20) donc le temps total passé pour obtenir un nombre n'est toujours pas mauvais.

La probabilité d'obtenir 19 ou 20 est de 1 sur 10. La probabilité de le refaire est de 1/100, etc. La série 1/10 + 1/100 + 1/1000 + ... converge vers 0.1111... des jets de d20 supplémentaires par jet de d6, si ma logique est correcte.

@Rayllum suggère dans les commentaires que au lieu de simplement se débarrasser, changez de stratégie. Par exemple, pour d8, sur 17 20, utilisez-le comme un d4, puis le jet suivant détermine s'il faut ajouter 4 ou non. d4 + 4*d2 stratégie suggérée dans une autre réponse. Cela réduit le nombre moyen de lancers pour un d8 à 1,2, et fixe une limite supérieure stricte de 2. Des astuces similaires sont possibles pour d'autres dés.


Mais au moins, vous n'avez pas à faire de calcul quand vous relancez, seulement sur celui qui est finalement dans la bonne fourchette. Les relances sont "moins chères" que d'autres stratégies à jets multiples parce qu'elles peuvent être effectuées rapidement avec peu d'effort mental et qu'elles utilisent le dé "comme prévu" sans avoir besoin de juger les angles, il suffit de lire la face. Vous devez toujours faire des calculs à la fin sur le résultat d'un seul dé, mais cela peut être plus simple qu'une formule qui implique 2 entrées et de plus grandes valeurs intermédiaires.

Une longue série de jets de d20 élevés peut être amusante en soi, ou simplement frustrante ("où étaient ces jets pour mes attaques / jets de sauvegarde / contrôles ?)

Il est possible que certains joueurs qui n'ont pas surmonté la l'erreur du joueur seraient frustrés de "gaspiller" tous leurs hauts rouleaux en devant les jeter. Le fait d'écarter les jets faibles et de décaler la cartographie rendrait les mathématiques légèrement moins simples (1 étape de soustraction supplémentaire au départ), mais pourrait rendre certains joueurs plus heureux. (que de jeter les rouleaux élevés).


Le défi du cadre : le temps, et pas seulement le nombre de rouleaux, est probablement la vraie préoccupation.

Des réponses astucieuses et originales ont suggéré d'utiliser d'autres propriétés des dés et des angles, mais certaines d'entre elles pourraient allonger la durée de chaque lancer (par exemple, évaluer l'angle et/ou consulter une table de consultation des sommets).

Minimiser la moyenne temps au résultat est probablement un meilleur objectif dans le monde réel que de minimiser le nombre de lancers. Cette partie est un défi de cadre basé sur votre prémisse de post-apocalypse. La question mathématique actuelle de la recherche de rouleaux minimums est également intéressante.

En tenant compte de ce délai, permettez-moi de suggérer une formule plus simple pour faire correspondre les jets de d20 à des plages plus petites . Votre formule basée sur le plancher $$X - B \times \left \lfloor { \frac {X-1}{B}} \right \rfloor $$
est équivalent à 1 + (x-1)%B un reste de 1..B au lieu de 0..B-1. Par exemple, pour B=4, cela donne 1,2,3,4, 1,2,3,4, etc. Je pense qu'il serait plus facile d'utiliser directement le quotient arrondi. en haut ("plafond").

$$ \left \lceil { \frac {X}{5, 3, \tt or\ 2}} \right \rceil $$

Cela présente l'avantage pour les humains que les chiffres les plus élevés sur le d20 sont les plus élevés sur le d4 / d6 / d8 / d10 / d12.

Par exemple, pour un d4, il est assez intuitif de voir où se situe votre nombre dans les quatre plages 1-5, 6-10, 11-15, 16-20. Cela fonctionne bien car 5 est un facteur de 10, la base numérique que nous avons l'habitude d'utiliser. Ou alors, pensez-y comme suit d20/5 round up.

Malheureusement, nous ne pouvons pas le faire dans les deux sens sur le même d20 pour obtenir 2d4 d'un seul jet. (A moins que vous ne lanciez un lot de d4 et ne se soucient pas de la corrélation). 1 sur le ceil(x/5) fait 1 sur le 1+(x-1)%4 deux fois plus probable que les autres résultats. Idem pour les autres nombres. (Une cartographie différente pourrait donner une corrélation opposée, rendant les rouleaux plus susceptibles de tendre vers la moyenne plutôt que de s'en éloigner). Vous pourriez faire d20/4 y d20%4 pour 2 résultats d4 indépendants, ou juste 1 si le jet était 17 20. Avec 2 joueurs regardant le même jet de d20, l'un peut totaliser les 1 + (x-1)%4 dans leur tête, et l'autre peut totaliser les ceil(x/4) ce qui permet à un joueur de gagner du temps pour lancer un projectile magique ou une potion de soin.

Pour un d6, d20/3 L'utilisation de la fonction "round up" n'est probablement pas aussi intuitive pour la plupart des gens, mais je pense que c'est quelque chose que vous pouvez rapidement maîtriser. (A moins que la mécanique d'arrondi de 5e en bas pour la résistance aux dommages conduit à des erreurs fréquentes...) Vous pourriez écrire une table qui est facile à rechercher visuellement parce que l'entrée d20 et la sortie d6 sont toutes deux dans l'ordre croissant.

Pour un d8, divisez par 2 et arrondissez au supérieur (et écartez les jets 17 20). Ou bien utilisez votre formule, qui revient à soustraire 8 ou non pour la moitié supérieure de la fourchette acceptable. C'est également assez simple et évite de "diviser par 2 arrondis vers le haut", ce qui est très proche, mais différent, de la résistance aux dommages standard du 5e diviser par 2 arrondis vers le bas. On en revient probablement à l'expérience qui est mentalement plus facile dans l'ensemble. Ou éliminez 1 et 18 20, puis divisez par 2 en arrondissant à l'inférieur.

Pour un d10, votre méthode revient à ignorer le premier chiffre (en traitant 0 comme 10) qui devrait être très rapide et intuitive (et moins de risque d'erreur) que de diviser par 2 arrondis vers le haut. Évite également les conflits de mémoire numérique pour la résistance aux dommages = diviser par 2 arrondir au chiffre inférieur.

Pour un d12, c'est un calcul trivial ("diviser par 1"). Le seul coût est celui d'un plus grand nombre de relances attendues/moyennes.


Note de bas de page 1 : En programmation informatique, rand() % 12 n'a qu'un biais minime et peut être "suffisamment bonne" lorsque rand() peut produire des nombres jusqu'à 2^32-1, mais un énorme biais quand il produit des nombres de 0..19. Cela produirait un nombre aléatoire de 0 à 11, mais pas uniformément distribué. Les nombres 0..7 apparaîtraient deux fois plus souvent que 8..11.

De même, rand() / (RAND_MAX/12) a un mauvais biais pour les petits nombres comme 12, car l'intervalle n'est pas divisible de manière égale en 12 morceaux de taille égale.

Je ne le mentionne que pour souligner que ce problème est fondamentalement similaire à un autre qui a été étudié de manière approfondie pour l'informatique. En le faisant à la main, et avec de petites plages, les compromis sont différents.

3voto

superb rain Points 121

Un jet de d20 contient plus d'informations qu'un jet de d6 (ou tout autre dé plus petit). Il devrait donc être possible de faire une moyenne moins d'un un jet de d20 pour un jet de d6. Pour être plus précis, log(6)/log(20)=0,5981 jet de d20 devrait suffire. Comment cela peut-il être inférieur à un ? Imaginez que vous émulez un d2 avec un d4. Chaque jet de d4 vaut dos d2 jets (prendre le résultat du d4 divisé par 2 comme un résultat d2, et le prendre modulo 2 pour un autre), donc d2 fait en moyenne 0,5 jet de d4.

Pour tous les dés demandés avec N faces :

 N   ideal d20 rolls
--------------------
 4   0.46276
 6   0.59810
 8   0.69413
10   0.76862
12   0.82948

Emuler d2 avec d4 est facile. Comment pouvons-nous obtenir une telle efficacité pour émuler, disons, d6 avec d20 ? Lançons le d20 deux fois tout de suite. Cela nous donne 400 résultats différents possibles. Cela fait 6 catégories de 66 résultats chacune, et 4 résultats restants. Maintenant :

  • Si le résultat réel tombe dans l'une de ces 6 "bonnes" cases, nous utilisons le numéro de la case comme résultat du d6. Mais ne jetez pas dans le seau nous sommes ! Nous pouvons continuer à utiliser cette gamme de taille 66 pour d'autres rouleaux.
  • Si le résultat réel est l'un des 4 restes, nous n'avons pas encore de résultat de d6. Mais il ne faut pas jeter dont les restes que nous avons ! Nous pouvons conserver cette plage de taille 4 pour d'autres lancers. Maintenant, augmentons-la à plus de 1000 et essayons à nouveau jusqu'à ce que nous obtenions un résultat d6.

Plus techniquement :

  • Nous allons garder deux choses : limit et un nombre value dans la gamme [0, limit) . Et chaque nombre dans cet intervalle a la même probabilité d'être value . Commencez par limit =1 et value =0.
  • Chaque fois que nous voulons un nouveau résultat pour dN, augmentons d'abord la taille de l'intervalle, disons limit 1000. Pour ce faire, multipliez les deux limit y value avec 20 et en ajoutant un nouveau résultat de jet de d20 à value . Ensuite, appliquez la distinction de cas ci-dessus, c'est-à-dire qu'il est très probable d'obtenir un résultat dN et de conserver une gamme assez large, ou très improbable de ne pas obtenir un résultat dN et de conserver une gamme assez petite.

Notez que, par exemple, pour d4, dans le très probable "bon" cas, non seulement nous obtenons un résultat d4, mais nous ne réduisons la fourchette que d'un facteur 4 environ. Alors que le d20 donne un résultat de se développer la fourchette est augmentée par le facteur 20. Donc dos d4 rétrécissent la plage plus lentement qu'une un Un jet de d20 le fait repousser. C'est ainsi que nous obtenons en moyenne plus de deux résultats de d4 par jet de d20. Ou, de manière équivalente, comment on obtient en moyenne moins de 0,5 jet de d20 par résultat de d4.

Résultats de l'exécution en Python, avec un million de rouleaux pour chaque N :

       d20 rolls
 N  average  ideal     average / ideal
----------------------------------------
 4  0.46385  0.46276  1.0023523685865143
 6  0.59994  0.59810  1.0030630049027711
 8  0.69634  0.69413  1.0031713739604955
10  0.77008  0.76862  1.0019010821509053
12  0.83293  0.82948  1.0041577531922499

Notez que les moyennes réelles sont très proches des moyennes idéales. Et : Rappelez-vous que le "bon cas" nous donne non seulement un résultat dN mais conserve également une plage beaucoup plus large. Et nous pouvons rendre le bon cas plus probable simplement en gardant l'intervalle plus grand. J'ai utilisé ce que j'ai dit ci-dessus, en faisant limit 1000. Plus vous l'agrandissez, plus vous vous rapprochez de l'idéal.

Code Python complet (vous pouvez exécutez-le sur repl.it mais là, j'ai réduit les rouleaux à 100.000) :

from random import randrange
from math import log

def d20():
    """Return random integer from 0 to 19."""
    global d20_rolls
    d20_rolls += 1
    return randrange(20)

value, limit = 0, 1
def dn(n):
    """Return random integer from 0 to n-1."""
    global value, limit
    while True:
        while limit < 1000:
            value = value * 20 + d20()
            limit *= 20
        multiple = limit - limit % n
        if value < multiple:
            result = value % n
            value //= n
            limit //= n
            return result
        value -= multiple
        limit -= multiple

rolls = 10**6

for n in 4, 6, 8, 10, 12:
    d20_rolls = 0
    for _ in range(rolls):
        dn(n)
    average = d20_rolls / rolls
    ideal = log(n) / log(20)
    print('%2d' % n, '%.5f' % average, '%.5f' %  ideal, average / ideal, sep='  ')

2voto

Glen O Points 359

Pour pouvoir émuler tous les nombres requis, vous devez être capable d'émuler d2, d3 et d5. Par exemple, pour émuler un d10, vous lancez un d2 et un d5, et si le d2 donne 2, vous ajoutez 5 au résultat du d5. Comme tous les dés de base sont des multiples de 2, 3 et 5, sans autres facteurs premiers, c'est ce dont vous avez besoin.

De même, pour créer un d6, il suffit de lancer d2 et d3, et si le d2 est un 2, ajoutez 3. Pour créer un d12, faites un d6, puis ajoutez 6 si le d2 est un 2. Un d4 ? Lancez un d2, puis si un deuxième d2 est un 2, ajoutez 2.

Avec un d20, vous pouvez facilement émuler d2 et d5 (également d4 et d10, ce qui facilite certains processus). Il ne reste donc plus que le d3 à émuler.

Ce n'est pas un problème trivial, et si aucune modification ne peut être apportée au dé, et que vous devez être en mesure d'obtenir des résultats absolus (ne nécessitant aucun jugement) sans possibilité d'un nombre infini de relances, alors ce ne sera pas faisable avec un d20.

Cela dit, il existe des moyens de contourner le problème.

Modification de la filière

Cela n'est raisonnable que si vous n'avez besoin que de d2, d4, d6, d8 et d12, mais vous pouvez modifier le dé de façon à ce que les faces 1 et 20 ne puissent pas être lancées - cela pourrait être réalisé en ajoutant de la boue ou une autre substance pour empêcher le dé de s'arrêter sur 1 ou 20. Ensuite, pour d3, si le nombre obtenu est compris entre 2 et 7, c'est un 1, entre 8 et 13, c'est un 2, et entre 14 et 19, c'est un 3. Pour d2, il suffit de regarder si le nombre est pair ou impair.

Mais cela va détruire l'émulation du D5.

Appel au jugement

Comme décrit par Thomas Markov dans sa réponse, on pourrait utiliser la forme triangulaire du d20 pour créer une sorte de mécanisme de roulement d3 (ou d12). Cependant, cela repose sur le jugement. C'est-à-dire que vous devez décider quel coin est le plus éloigné de vous... ou si vous ne pouvez pas le décider, vous prenez le coin le plus proche. Cela crée une situation où l'on pourrait prendre n'importe lequel des trois résultats, s'il s'agit d'une situation "trop proche pour être appelée".

On dirait que c'est très proche d'une position "pointant vers le bas" ? Bougez légèrement la tête pour que celle que vous voulez soit en haut, ou placez-vous de façon à ce qu'elles soient égales et prenez celle du bas.

Tant que tous les joueurs sont honnêtes, le système fonctionnera bien, bien sûr.

Roulements infinis possibles

Celle-ci est un peu plus simple, mais présente ses propres inconvénients. Lancez le d20. Si c'est un 19 ou un 20, relancez. Sinon, prenez la valeur mod 3 (ou comptez le nombre de six qu'il faut pour arriver à une valeur comprise entre 1 et 6 - un 15 est soustrait deux fois (15 -> 9 -> 3), donc c'est un 2).

Cela ne repose pas du tout sur la modification du dé, et il est garanti de produire un d18 juste (ce qui donne d3 et d6 comme façons de le lire)... mais il n'y a aucune garantie que vous cesserez de lancer des 19 et des 20. Dans des circonstances réalistes, il est très peu probable que vous restiez coincé dans une telle boucle pendant plus de quelques lancers... mais pas impossible.

N'utilisez pas le d20 comme dé.

Il existe d'autres façons de produire un résultat d3. Comme l'a noté S'il te plaît, arrête d'être méchant Avec deux personnes choisissant des chiffres, il est possible de les combiner de manière à créer un caractère aléatoire. Le d20 lui-même peut être utilisé pour assurer l'équité à cet égard - en termes simples, le MJ choisit 1, 2 ou 3. Il positionne ensuite le d20, tout en le protégeant, de manière à ce qu'il affiche le nombre choisi. Le joueur annonce alors son chiffre (1, 2 ou 3), et le MJ révèle la valeur du d20. On les additionne, et on soustrait 3 si la valeur est supérieure à 3.

On peut faire de même pour toute valeur d inférieure à 20.

Cela semblera très aléatoire... mais les gens ont tendance à éviter les extrêmes, donc les probabilités ne seront pas vraiment égales.

Une version plus juste

Il existe un moyen d'obtenir une meilleure équité sans utiliser le d20 comme dé. Le MJ tient le dé à côté du 1 et du 20 dans un sac ou quelque chose de similaire, et le joueur choisit l'une des faces du "milieu" - il y a 12 faces qui sont raisonnablement accessibles (en supposant que les doigts du MJ bloquent invariablement les trois faces directement adjacentes au 1 et au 20). Utilisez ensuite la même approche que celle décrite dans "modifier le dé" pour déterminer le résultat du d3.

En l'absence de sac, vous pouvez simplement demander au joueur de fermer les yeux... mais cela demande une confiance supplémentaire, car rien n'empêche le MJ de faire tourner le dé pendant que le joueur a les yeux fermés afin de guider le doigt du joueur vers le côté souhaité.

Faire un trou

Il y a une dernière approche qui pourrait bien fonctionner, mais elle nécessite la capacité de modifier votre environnement dans une certaine mesure - Vous pourriez faire un petit trou dont la forme correspondrait au sommet d'un d20. Vous lancez un dé sans pouvoir voir le résultat, puis vous guidez le dé jusqu'au trou, pour qu'il s'y insère, avant de regarder. Le sommet en haut peut fonctionner comme un d12 (comme décrit par Thomas Markov dans leur table), ce qui vous permet d'émuler également un d6, et ainsi vous avez tous les dés réalisables avec le d20.

1voto

LinuxBill Points 2029

Sur une série de rouleaux Codage arithmétique requiert en moyenne le moins de rouleaux réels par rouleau émulé. L'idée de base est que chaque résultat possible des jets réels ainsi que chaque résultat possible des jets émulés sont mis en correspondance avec une plage de nombres réels entre 0 et 1, la largeur de chaque plage étant égale à la probabilité de ce résultat. Notez que nous pouvons économiser des jets de D20 en émulant simplement la somme pour chaque jet de plusieurs dés. Afin d'utiliser des fractions plus simples : après chaque jet émulé, nous remettons en correspondance les deux ensembles d'intervalles de sorte que le résultat du dernier jet soit étendu à l'intervalle 0-1. Par exemple, si nous voulons émuler les jets D6 et ensuite un 3D8 :

D6 ranges:
1: 0 - 1/6
2: 1/6 - 1/3
3: 1/3 - 1/2
4: 1/2 - 2/3
5: 2/3 - 5/6
6: 5/6 - 1
We roll a 6 on the D20, the range we are looking at is now 3/10 - 7/20.
The remaining possibilities on the emulated D6 roll are:
2: 1/6 - 1/3
3: 1/3 - 1/2
We roll a 14 on the D20. The range we are looking at is now 67/200 - 27/80.
The result is 3.

Now we begin emulating 3D8:
After remapping: the range we are looking at is 1/100 - 1/40
3D8 ranges:
3: 0 - 1/512
4: 1/512 - 1/128
5: 1/128 - 5/256
6: 5/256 - 5/128
7: 5/28 - 35/512
8: 35/512 - 7/64
9: 7/64 - 21/128
10: 21/128 - 15/64
11: 15/64 - 81/256
12: 81/256 - 13/32
13: 13/32 - 1/2
14: 1/2 - 19/32
15: 19/32 - 175/256
16: 175/256 - 49/64
17: 49/64 - 107/128
18: 107/128 - 57/64
19: 57/64 - 477/512
20: 477/512 - 123/128
21: 123/128 - 251/256
22: 251/256 - 127/128
23: 127/128 - 511/512
24: 511/512 - 1
Since the remapped range after the last roll is narrower than 0-1; we
can already eliminate most of the possibilities. The remaining ones are:
5: 1/128 - 5/256
6: 5/256 - 5/128
We roll a 19 on the D20.
The range we are looking at is now 97 % 4000 :- 1 % 40
The result is 6
If we emulate another roll: the we can remap the current range to 151/625 - 7/25

Avec cette méthode : un jet émulé individuel peut nécessiter plus de jets de D20 que certaines des autres méthodes ; mais les autres jets de la même séquence en nécessiteront moins ou aucun.

0voto

Il est possible d'émuler un jeu de dés complet en utilisant seulement un nombre fixe de lancers, mais pas avec un d20.

Si vous souhaitez émuler un jeu de dés complet en utilisant un nombre fixe de lancers, vous avez besoin de 3 dés. Les dés requis sont : un d10, un d6, et un 2d ou "pièce". Vous pouvez omettre la "pièce" des dés requis si vous êtes prêt à utiliser un résultat pair/impair du d10 ou d6. Cependant, l'omission de la pièce ne diminue pas le nombre de lancers nécessaires.

Pour utiliser deux dé plus petits pour émuler un dé plus grand, la formule est la suivante :

dX = (dA * B) - (dB - 1)
where X = A * B

En commençant avec seulement un d2 ou une "pièce". Vous pouvez émuler un d4 en effectuant deux jets de dés :

d4 = (d2 * 2) - (d2 - 1)

Vous pouvez confirmer les résultats par vous-même en utilisant ce lien anydice.

En utilisant cette formule, nous pouvons produire les dés suivants en 2 jets :

d12 = (d6 * 2) - (d2 - 1)
d20 = (d2 * 10) - (d10 - 1) 
   or (d10 * 2) - (d2 - 1)
d100 = (d10 * 10) - (d10 - 1)

Vous pouvez voir que le d10 est nécessaire ici, car le nombre de faces sur le d20 et le d100 n'est pas divisible par 6.

Enfin le d8, qui nécessite 3 jets au total puisqu'il faut émuler le d4 comme indiqué ci-dessus :

d8 = ((d4) * 2) - (d2 - 1)
where d4 = (d2 * 2) - (d2 - 1)

Pour plus de détails sur la raison pour laquelle cela ne peut pas être fait en utilisant seulement un d20, veuillez consulter cette excellente réponse de ADdV

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