HTML preprocessors can make writing HTML more powerful or convenient. For instance, Markdown is designed to be easier to write and read for text documents and you could write a loop in Pug.
In CodePen, whatever you write in the HTML editor is what goes within the <body>
tags in a basic HTML5 template. So you don't have access to higher-up elements like the <html>
tag. If you want to add classes there that can affect the whole document, this is the place to do it.
In CodePen, whatever you write in the HTML editor is what goes within the <body>
tags in a basic HTML5 template. If you need things in the <head>
of the document, put that code here.
The resource you are linking to is using the 'http' protocol, which may not work when the browser is using https.
CSS preprocessors help make authoring CSS easier. All of them offer things like variables and mixins to provide convenient abstractions.
It's a common practice to apply CSS to a page that styles elements such that they are consistent across all browsers. We offer two of the most popular choices: normalize.css and a reset. Or, choose Neither and nothing will be applied.
To get the best cross-browser support, it is a common practice to apply vendor prefixes to CSS properties and values that require them to work. For instance -webkit-
or -moz-
.
We offer two popular choices: Autoprefixer (which processes your CSS server-side) and -prefix-free (which applies prefixes via a script, client-side).
Any URLs added here will be added as <link>
s in order, and before the CSS in the editor. You can use the CSS from another Pen by using its URL and the proper URL extension.
You can apply CSS to your Pen from any stylesheet on the web. Just put a URL to it here and we'll apply it, in the order you have them, before the CSS in the Pen itself.
You can also link to another Pen here (use the .css
URL Extension) and we'll pull the CSS from that Pen and include it. If it's using a matching preprocessor, use the appropriate URL Extension and we'll combine the code before preprocessing, so you can use the linked Pen as a true dependency.
JavaScript preprocessors can help make authoring JavaScript easier and more convenient.
Babel includes JSX processing.
Any URL's added here will be added as <script>
s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.
You can apply a script from anywhere on the web to your Pen. Just put a URL to it here and we'll add it, in the order you have them, before the JavaScript in the Pen itself.
If the script you link to has the file extension of a preprocessor, we'll attempt to process it before applying.
You can also link to another Pen here, and we'll pull the JavaScript from that Pen and include it. If it's using a matching preprocessor, we'll combine the code before preprocessing, so you can use the linked Pen as a true dependency.
Search for and use JavaScript packages from npm here. By selecting a package, an import
statement will be added to the top of the JavaScript editor for this package.
Using packages here is powered by esm.sh, which makes packages from npm not only available on a CDN, but prepares them for native JavaScript ESM usage.
All packages are different, so refer to their docs for how they work.
If you're using React / ReactDOM, make sure to turn on Babel for the JSX processing.
If active, Pens will autosave every 30 seconds after being saved once.
If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.
If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.
Visit your global Editor Settings.
<div class="article">
Si je vous parle de dés, immédiatement vous imaginez un petit cube à 6 faces numérotées de 1 à 6 : c'est ce que l'on appel un d6 dans le jargon des jeux de rôle. Mais le d6 n'est pas le seul, et surtout, le d6 plus performant en terme d'équilibre de hasard.
C'est pourquoi je souhaite vous présenter le seul dé capable de simuler à lui seul des dés comme les d4, d6, d8, d10, d12 ou d20 et j'en passe tout en étant le plus équilibré qu'il soit possible de l'être : j'ai nommé le d120 !
<figure>
<img width="288" height="232" src="https://blog.lesieur.name/media/images/upload/D120Amber.jpg" alt="Le dé ultime, le d120 !" style="max-width: 288px; width: 100%; height: auto;">
<figcaption><a href="http://thedicelab.com/" target="_blank">d120 de The Dice Lab</a></figcaption>
</figure>
Je vous propose de découvrir dans cet article :
- pourquoi le d120 est appelé (ici) le dé ultime,
- comment le d120 peut être à lui seul utilisé pour faire office de d1 jusqu'au d119 (en passant bien entendu par le très utile d100),
- les tables de correspondance associées des dés multiples de 120,
- les outils pour aligner votre d120 sur vos statistiques ou aligner vos statistiques sur votre d120.
- les idées originales pour profiter des 120 valeurs à votre disposition.
On finira bien entendu par le moyen de vous procurrer le d120 !
> Si vous êtes développeur JavaScript et que vous cherchez des exemples d'utilisation de [Vue.js](https://vuejs.org/) à la volée (comme on utiliserait simplement jQuery), ou que vou souhaitez vérifier les fonctions utilisées dans cet article, vous pouvez jeter un œil au code source de cet article derrière le CodePen suivant : https://codepen.io/MachinisteWeb/pen/qGQLvp
## Pourquoi le d120 est le dé ultime ?
Saviez-vous que la sommes de chacun des côtés opposés d'un d6 fait 7 ? En effet `1 + 6 = 7`, `2 + 5 = 7` et `3 + 4 = 7` ! Intuitivement, on pourrait se dire que c'est une manière de répartir correctement les valeurs du dé pour que celui-ci ne soit pas pipé. Et bien en réalité, pas tout à fait.
### Le problème du d6
Si on observe le dé depuis les sommets, on s'aperçoit que l'un des sommets touche les 3 plus petites valeurs (1, 2 et 3) et que son opposé touche les trois plus grosses valeurs (4, 5 et 6). En d'autres termes, s'il semble difficile de faire tomber le dé exactement sur une face par chance, cela l'est moins en ce qui concerne de le faire tomber sur une partie plutôt qu'une autre plus souvent ; et donc, si on est doué, de jouer avec le hasard.
<figure>
<img width="260" height="220" src="https://blog.lesieur.name/media/images/upload/1-2-3-4-5-6.png" alt="Équilibre du dé 6" style="max-width: 260px; width: 100%; height: auto;">
<figcaption>Équilibre du dé 6</figcaption>
</figure>
### Des alternatives ?
Bien sûr, il est possible de répartir plus équitablement les valeurs autour des faces mais cela se fait alors au détriment de l'égalité de valeur sur les faces opposées et inversement. Ainsi il existe des dés bien plus équilibré que le d6 classique comme la collection de _The Dice Lab_ : les dés OptiDice™ avec ses d4, d6, d8, d10, d12 et d20 hautement équilibré mais... toujours imparfait.
<figure>
<img width="310" height="201" src="https://blog.lesieur.name/media/images/upload/OptiDiceSetBlue.jpg" alt="d4, d6, d8, d10 (d100), d12, d20" style="max-width: 310px; width: 100%; height: auto;">
<figcaption><a href="http://thedicelab.com/" target="_blank">OptiDices de The Dice Lab</a></figcaption>
</figure>
Imparfait car il semble impossible d'obtenir avec les dés OptiDice™ (ou tout autre dé similaire) un dé parfait dont :
- La somme des valeurs de chaque pair de faces opposés (si elles existent) soit identique ET
- La moyenne de la somme des valeurs des faces autour de chaque sommet soit identique.
### Le d120, la solution !
Alors la question se pause : est-il possible de créer un dé qui puisse à la fois avoir les sommes de tous ses côtés opposés identiques, des faces ayant absoluement la même forme et également une répartition des valeurs sur les faces autour de ces sommets de manière à ce que le dé soit équilibré ?
Et bien oui ! Le d120 (soit 120 faces identiques) répond à ces critères et constitue le plus petit dé équilibré que l'on puisse créer ! Tout y est :
- La somme des valeurs de chaque pair de faces opposés est égale à 121 ET
- La moyenne de la somme des valeurs des faces autour de chaqu'un de ses 62 sommets vaut toujours 60,5 (605 / 10 pour 12 sommets, 363 / 6 pour 20 sommets et 242 / 4 pour 30 sommets). Cela correspond également à la moyenne des 120 faces.
<figure>
<img width="360" height="283" src="https://blog.lesieur.name/media/images/upload/d120five0316.jpg" alt="d120" style="max-width: 260px; width: 100%; height: auto;">
<figcaption><a href="http://thedicelab.com/" target="_blank">Les d120 de The Dice Lab</a></figcaption>
</figure>
En plus de répondre à tous les critères précédents, il permet de simuler en un seul jet de dé les d1, d2, d3, d4, d5, d6, d8, d10, d12, d15, d20, d24, d30, d40, d60 et d120. Il peut également simuler les autres dés non nommés précédemment du d7 jusqu'au d119 en minimum un jet de dé ! C'est ce que nous allons voir plus loin.
Pour savoir plus en détail pourquoi le d120 est ultime, je vous laisse jeter un œil à la vidéo de Mickaël Launay de la chaine Mickmath sur le sujet :
<iframe style="display: block; width: 100%; max-width: 560px; height: 315px; margin-left:auto; margin-right: auto; margin-top: 16px" width="560" height="315" src="https://www.youtube.com/embed/N-DPQ7XOHnU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
## Tables standards
Tout d'abord commençons par les tables standards qui ne nécessitent qu'un seul jet de dé. Il s'agit de table dont le X de dX est un multiple de 120. Il en existe 16.
### Simuler des dés standards avec un d120
Accédez aux tables associatives ci-dessous pour simuler le dé dont vous avez besoin. Quand votre dé tombe sur une valeur comprise dans l'intervalle de la colonne de gauche, votre résultat est en réalité la valeur de la colonne de droite.
<ul>
<li><a href="https://blog.lesieur.name/d120/#d1">Simuler un d1 avec un d120</a></li>
<li><a href="https://blog.lesieur.name/d120/#d2">Simuler un d2 avec un d120</a></li>
<li><a href="https://blog.lesieur.name/d120/#d3">Simuler un d3 avec un d120</a></li>
<li><a href="https://blog.lesieur.name/d120/#d4">Simuler un d4 avec un d120</a></li>
<li><a href="https://blog.lesieur.name/d120/#d5">Simuler un d5 avec un d120</a></li>
<li><a href="https://blog.lesieur.name/d120/#d6">Simuler un d6 avec un d120</a></li>
<li><a href="https://blog.lesieur.name/d120/#d8">Simuler un d8 avec un d120</a></li>
<li><a href="https://blog.lesieur.name/d120/#d10">Simuler un d10 avec un d120</a></li>
<li><a href="https://blog.lesieur.name/d120/#d12">Simuler un d12 avec un d120</a></li>
<li><a href="https://blog.lesieur.name/d120/#d15">Simuler un d15 avec un d120</a></li>
<li><a href="https://blog.lesieur.name/d120/#d20">Simuler un d20 avec un d120</a></li>
<li><a href="https://blog.lesieur.name/d120/#d24">Simuler un d24 avec un d120</a></li>
<li><a href="https://blog.lesieur.name/d120/#d30">Simuler un d30 avec un d120</a></li>
<li><a href="https://blog.lesieur.name/d120/#d40">Simuler un d40 avec un d120</a></li>
<li><a href="https://blog.lesieur.name/d120/#d60">Simuler un d60 avec un d120</a></li>
</ul>
<div class="standards">
<div
v-for="dice in diceList()"
:key="dice.value">
<div class="h3" :id="'d' + dice.value">Simuler un d{{ dice.value }} avec un d{{ d120 }}</div>
<table>
<tr>
<th>Si vous faites entre … et … (inclus)</th>
<th>alors le résultat est …</th>
</tr>
<tr
v-for="table in tableList(dice.value)"
:key="table.to">
<td>{{ table.fromLowerDisplay }} - {{ table.fromUpperDisplay }}</td>
<td class="to">{{ table.to }}</td>
</tr>
</table>
</div>
</div>
## Table personnalisée
Cependant, il est également possible de simuler des dés non standards comme le d7, d9, d11, d13, …, d118 et d119. Plus le dé sera petit, plus il y aura de chance que la résolution de la valeur dans la table ne se face qu'avec un seul jet de dé. Cependant, pour les valeurs limites, afin de trancher, il faudra relancer un dé (voir plus).
### Simuler un dé personnalisé avec un d120
Remplissez le champ ci-dessous pour choisir le dé que vous souhaitez utiliser.
<div class="custom">
<blockquote>
<p>
<strong><samp>OK</samp></strong>
Quel dé voulez-vous simuler ?
<input type="" name="" v-model="custom" placeholder="dé entre 1 et 120">
<span v-if="(customInt && customInt > d120) || (customInt && customInt < 1)"><em>La valeur doit être comprise entre 1 et {{ d120 }}.</em></span><span v-if="isNaN(customInt)"><em>La valeur doit être un nombre.</em></span>
</p>
</blockquote>
<blockquote v-if="customInt && customInt <= d120 && customInt > 0">
<p>
Multiplicateur de dé <input type="" name="" v-model="multiplicator" placeholder="nombre de d120">
<span v-if="multiplicatorInt && multiplicatorInt < 1"><em>La valeur doit être 1 ou plus.</em></span><span v-if="isNaN(multiplicatorInt)"><em>La valeur doit être un nombre.</em></span><span><em><a href="https://blog.lesieur.name/d120/#convertisseur-de-dés-multiples-équilibrés">Voir la section suivante pour comprendre l'utilité du multiplicateur</a></em></span>
</p>
<p></p>
</blockquote>
<div v-if="customInt && customInt <= d120 && customInt > 0 && multiplicatorInt && multiplicatorInt > 0">
<div class="h3" id="custom">Simuler un d{{ customInt }} avec un d{{ d120 }}</div>
<p>Quand votre dé tombe sur une valeur de la colonne de gauche, vous avez en réalité fait la valeur de la colonne de droite. Quand il vous est proposé de lancer un <a href="https://blog.lesieur.name/d120/#d10-rapide-avec-un-d120">d10</a>, le résultat de ce lancer va décider si votre résultat est la valeur basse ou la valeur haute. Si la valeur du <a href="https://blog.lesieur.name/d120/#d10-rapide-avec-un-d120">d10</a> est :</p>
<ul>
<li>inférieure au chiffre le plus à gauche de la liste entre « […] » alors le résultat est la valeur basse,</li>
<li>supérieur au chiffre le plus à gauche de la liste entre « […] » alors le résultat est la valeur haute,</li>
<li>égale au chiffre le plus à gauche de la liste entre « […] » alors recommencez avec le chiffre suivant le plus à gauche.</li>
</ul>
<p>Si vous arrivez au dernier chiffre, faire ce chiffre signifie que le résultat est la valeur basse.</p>
<blockquote>
<p>
Filtrez une valeur du dé <input type="" name="" v-model="customFilter" placeholder="valeur faites par votre d120">
<span v-if="(customFilterInt && customFilterInt > d120) || (customFilterInt && customFilterInt < 1)"><em>La valeur doit être comprise entre 0 et {{ d120 }}.</em></span><span v-if="isNaN(customFilterInt)"><em>La valeur doit être un nombre.</em></span>
</p>
</blockquote>
<table>
<tr>
<th>Si vous faites …</th>
<th>alors le résultat est …</th>
</tr>
<template
v-for="(table, index) in tableList(customInt)"
:key="table.from">
<tr>
<td>
{{ table.from }} <span v-if="table.list">puis lancer un <a href="https://blog.lesieur.name/d120/#d10-rapide-avec-un-d120">d10</a> !</span>
</td>
<td class="to"
v-if="!table.list">{{ table.to * multiplicatorInt }}</td>
<td class="to info"
v-if="table.list">
{{ table.to * multiplicatorInt }} ou {{ table.toPlus * multiplicatorInt }} <small>[{{ table.list }}]</small>
<small class="plus">Si la valeur du <a href="https://blog.lesieur.name/d120/#d10-rapide-avec-un-d120">d10</a> est :<br>- inférieure au chiffre le plus à gauche de la liste entre « […] » alors le résultat est un {{ table.to }},<br>- supérieur au chiffre le plus à gauche de la liste entre « […] » alors le résultat est un {{ table.toPlus }},<br>- égale au chiffre le plus à gauche de la liste entre « […] » alors recommencez avec le chiffre suivant le plus à gauche. Si vous arrivez au dernier chiffre, faire ce chiffre signifie que le résultat est un {{ table.to }}.</small>
</td>
</tr>
</template>
</table>
</div>
## Multiples lancers avec un d120
Si vous faites du jeu de rôle, vous connaissez surement la notation **AdX**. Dans cette notation :
- A est le nombre de dés qu'il faut lancer (pouvant être omis s'il vaut 1,
comme partout dans cet article),
- X est le nombre de face pour chacun des dés.
Ainsi s'il vous est demandé de faire un **6d6** cela signifie que vous devez lancer 6 dés de six faces… ou 1d36 avec la table personnalisée du d120 pour créer un d36 !
### Limitations sans d120
> _`OK`_
> Dans un lancé **AdX** standard, il y a deux phénomènes inhérants au fait qu'on utilise plusieurs dés. Le premier est l'_inaccessibilité des valeurs basses_ et le second la _non équiprobabilité des résultats_.
>
> #### L'inaccessibilité des valeurs basses
>
> Si vous lancez 6d6, vous pourrez uniquement obtenir des résultats entre 6 et 36 car l'usage de 6 dés signifie qu'au minimum chaque dé tomberra sur 1 (`1 + 1 + 1 + 1 + 1 + 1 = 6`). Vous ne pourrez donc jamais atteindre la valeur 4.
>
> #### La non équiprobabilité des résultats
>
> Si je demande quelle est la probabilité d'obtenir plus de 90 lors d'un lancé de 6d20 (1d120), alors puisque 90 représente 3/4 de 120, on serait tenté de dire rapidement qu'elle est de 25%. Pour le dire autrement, une chance sur 4 de faire au moins 90 ou plus. Hors ce n'est absoluement pas le cas.
>
> En réalité, il n'existe qu'une seule manière d'obtenir 120 (`20 + 20 + 20 + 20 + 20 + 20 = 120`), mais il existe 6 manière d'obtenir 119 (5 dé d'une valeur de 20 et un dé d'une valeur 19, c.-à-d. 6 possibilités différentes car chacun des dés peut être le 19 alors que tous les autres peuvent être le 20)), etc. Cela signifie qu'il y a 6 fois plus de chance d'obtenir 119 que d'obtenir 120. On comprend donc rapidement qu'il est compliqué pour notre cerveau d'estimer, même approximativement les probabilités d'apparition de chaque valeur. En réalité, dans notre exemple du 6d20, on a 2.97% de chance de faire une valeur supérieur à 90 (et non 25% !).
>
> Vous pouvez jouer avec ces probabilités sur le site https://anydice.com/. Dans notre exemple, tapez `output 6d20`, puis cliquez sur `Calculate` et `At least` et lisez la ligne 90.
### Convertisseur de dés multiples équilibrés
Voici un petit outil pour convertir n'importe quel nombre de lancer de dé multiple en un unique lancer de d120 sans souffrir des limitations précédemment évoqués.
Un multiplicateur est utilisé quand la valeur maximale du lancer multiple de dé dépasse 120. Par exemple, dans le cas d'un 2d70 (équivalent à lancer un 7d20), la valeur maximale est 140. Hors, sur un d120 on ne peut gérer que 120 valeurs. On utilise alors la valeur de A comme multiplicateur de résultat. On peut ainsi couvrir sur un d70 des valeurs de 1 à 140 en perdant de la précison (valeur de 2 en 2 au lieu de 1 en 1). Vous pouvez toujours décider de réellement lancer deux d70 mais vous reviendrez sur les limitations expliqués plus haut.
<blockquote>
<p>
<strong><samp>OK</samp></strong>
Quelle valeur doit être convertie ?
<input type="" name="" v-model="valueA" placeholder="A" style="width: 24px;text-align: center"> d <input type="" name="" v-model="valueX" placeholder="X" style="width: 24px;text-align: center"><span v-if="valueA && customA > 0 && valueX"> se simule avec <strong>{{ diceSuite().A }}<span class="a dice-suite" v-on:click="goToTable">d{{ diceSuite().X }}</span></strong><span v-if="diceSuite().A > 1"> ou alors utilisez un <span class="a dice-suite" v-on:click="goToTable">d{{ diceSuite().X }}</span> et multipliez le résultat par {{ diceSuite().A }}</span>.</span>
<span v-if="valueA && customA < 1"><em>La valeur A doit être supérieure à 0.</em></span><span v-if="valueA && isNaN(customA)"><em>La valeur A doit être un nombre.</em></span>
<span v-if="valueX && customX < 1"><em>La valeur X doit être supérieure à 0.</em></span><span v-if="valueX && isNaN(customX)"><em>La valeur X doit être un nombre.</em></span>
</p>
</blockquote>
### Conserver les limitations
Si vous souhaitez conserver l'_inaccessibilité des valeurs basses_ et le second la _non équiprobabilité des résultats_ avec un d120 voici la marche à suivre.
#### L'inaccessibilité des valeurs basses
- Vous pouvez simplement réellement simuler les dés d'origines autant de fois dans des lancer séparé. En d'autre terme, au lieu de lancer 1d24 pour simuler 4d6, lancez réellement 4 dé de 6 simuler avec un d120. La limitation ici est que vous aurez également la non équiprobabilité des résultats avec cette méthode.
- Pour ne reproduire que cette limitation sans l'autre, voici comment procéder. Imaginons que nous voulions reproduire un 4d6. La valeur de `A = 4` et la valeur de `X = 6`. Les résultats obtenables vont donc de 4 (`4 x 1`) à 24 (`4 x 6`). Le <a href="https://blog.lesieur.name/d120/#convertisseur-de-dés-multiples-équilibrés">convertisseur de dés multiples équilibrés</a> vous indiquera alors qu'un 4d6 se simule sur un d120 avec un d24 (ou 1d24). Il vous suffit donc de retrancher la valeur de A au d24 pour simuler un d20 (ou 1d20). Après votre jet de d20, une fois votre résultat obtenue, rajoutez simplement à celui-ci la valeur de A (si le résultat est de 1, vous avez en réalité fait 4 et si le résultat est de 20, vous avez en réalité fait 24).
<blockquote>
<p>
<strong><samp>OK</samp></strong>
Quelle valeur doit être convertie ?
<input type="" name="" v-model="valueA" placeholder="A" style="width: 24px;text-align: center"> d <input type="" name="" v-model="valueX" placeholder="X" style="width: 24px;text-align: center"><span v-if="valueA && customA > 0 && valueX && diceSuite().A < 2"> se simule avec un <strong><span class="a dice-suite" v-on:click="goToTable">d{{ diceSuite().X - customX }}</span></strong> en ajoutant ensuite {{ customX }} au résultat.</span>
<span v-if="valueA && customA < 1"><em>La valeur A doit être supérieure à 0.</em></span><span v-if="valueA && isNaN(customA)"><em>La valeur A doit être un nombre.</em></span>
<span v-if="valueX && customX < 1"><em>La valeur X doit être supérieure à 0.</em></span><span v-if="valueX && isNaN(customX)"><em>La valeur X doit être un nombre.</em></span>
<span v-if="valueA && valueX && diceSuite().A > 1"><em>Ne supporte que les valeurs simulable avec un d120.</em></span>
</p>
</blockquote>
#### La non équiprobabilité des résultats
Pour cette partie c'est un peu plus compliqué. Également, conserver la non équiprobabilité des résultats impose également de conserver l'inaccessibilité des valeurs basses.
- Vous pouvez simplement réellement simuler les dés d'origines autant de fois dans des lancer séparés. En d'autre terme, au lieu de lancer 1d36 pour simuler 6d6, lancez réellement 6 dé de 6 simuler avec un d120.
- Une manière plus compliqué est de répartir sur les 120 valeurs du d120 la distribution de répartition que génèrerait le lancer de plusieurs dés. Vous pouvez utilisez le site https://anydice.com/ pour vous y aider ou utiliser cet outil.
</div>
## Interprétation de dé rapide
Il peut être compliqué de manipuler les tables élevés pour déduire des valeurs de dé. C'est pourquoi il vous est proposé sur cette page des tables d'associations par dé. On peut cependant se passer de ces tables et lire les valeurs d'un d120 rapidement. Cela nécessite assez peu de gymnastique mentale pour les d2, d5, d8, d10, d12, d20 ou d24 et de connaitre les tables de multiplication usuelles jusqu'à 6 pour les d3, d4, d15, d30, d40 ou d60.
> **`OK`** **Interprétation des termes**
>
> _**Unités**_
> - Quand un résultat a 3 chiffres, l'unité correspond au premier chiffre. *Exemple :* 11**3** donne 3.
> - Quand un résultat a 2 chiffres, l'unité correspond au deuxième chiffre. *Exemple :* 7**6** donne 6.
> - Quand un résultat n'a qu'un chiffre, l'unité correspond à ce chiffre. *Exemple :* **4** donne 4.
> - La valeur 0 des unités est à interpréter comme un 10. *Exemple :* 4**0** donne 10.
>
> _**Dizaines étendues**_
> - Quand un résultat a 3 chiffres, la dizaine étendue correspond aux deux premiers chiffres. *Exemple :* **11**3 donne 11.
> - Quand un résultat à 2 chiffres, la dizaine étendue correspond au premier chiffre. *Exemple :* **7**6 donne 7.
> - Quand un résultat n'a qu'un chiffre, la dizaine étendue correspond à 12. *Exemple :* 4 donne 12.
> - Dit autrement, la valeur 0 des dizaines étendues est à interpréter comme un 12. *Exemple :* **0**4 donne 12.
### d2 rapide avec un d120 (pile ou face)
Tous les nombres ont une équiprobabilité d'être pairs ou impairs. Lancez un d120 puis vérifiez si les valeurs sont ;
- Impaires : vous avez fait un 1,
- Paires : vous avez fait un 2.
### d3 rapide avec un d120
Tous les nombres des dizaines étendues ont une équiprobabilité d'être compris entre 1-4, 5-8 et 9-12 indépendamment du chiffre des unités. Lancez un d120 puis vérifiez si les valeurs sont ;
- Dizaines 1-4 : vous avez fait un 1,
- Dizaines 5-8 : vous avez fait un 2,
- Dizaines 9-12 : vous avez fait un 3.
### d4 rapide avec un d120
Tous les nombres des dizaines étendues ont une équiprobabilité d'être compris entre 1-3, 4-6, 7-9 et 10-12 indépendamment du chiffre des unités. Lancez un d120 puis vérifiez si les valeurs sont ;
- Dizaines 1-3 : vous avez fait un 1,
- Dizaines 4-6 : vous avez fait un 2,
- Dizaines 7-9 : vous avez fait un 3,
- Dizaines 10-12 : vous avez fait un 4.
### d5 rapide avec un d120
Les chiffres des unités sont au nombre de 10 (1, 2, 3, 4, 5, 6, 7, 8, 9 ou 0 (c-à-d. 10)) et peuvent sortir de manière équiprobable. L'idée ici est d'ignorer les dizaines étendues et de ne prendre en compte que les unités. Lancez un d120 puis vérifiez si les valeurs sont ;
- Unités 1-5 : vous avez fait le résultat indiqué,
- Unités 6-10 : soustrayez 5 à cette valeur et vous avez fait le résultat indiqué.
### d6 rapide avec un d120
Les nombres des dizaines étendues sont au nombre de 12 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ou 12) et peuvent sortir de manière équiprobable. L'idée ici est d'ignorer les unités et de ne prendre en compte que les dizaines étendues. Lancez un d120 puis vérifiez si les valeurs sont ;
- Dizaines 1-6 : vous avez fait le résultat indiqué,
- Dizaines 7-12 : soustrayez 6 à cette valeur et vous avez fait le résultat indiqué.
### d8 rapide avec un d120
Les nombres des dizaines étendues sont au nombre de 12 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ou 12) et peuvent sortir de manière équiprobable indépendamment du chiffre des unités. De même, les chiffres des unités sont au nombre de 10 (1, 2, 3, 4, 5, 6, 7, 8, 9 ou 0 (c-à-d. 10)) et ont une équiprobabilité d'être pairs ou impairs indépendamment du nombre des dizaines étendues. L'idée ici va être d'utiliser les dizaines étendues uniquement jusqu'à 8 et d'utiliser les unités au dela de 8 pour départager les valeurs. Lancez un d120 puis vérifiez si les valeurs sont ;
- Dizaines 1-8 : vous avez fait le résultat indiqué,
- Dizaines 9-12 avec unités impaires : soustrayez 8 à cette valeur et vous avez fait le résultat indiqué,
- Dizaines 9-12 avec unités paires : soustrayez 4 à cette valeur et vous avez fait le résultat indiqué.
### d10 rapide avec un d120
Les chiffres des unités sont au nombre de 10 (1, 2, 3, 4, 5, 6, 7, 8, 9 ou 0 (c-à-d. 10)) et peuvent sortir de manière équiprobable indépendamment du nombre des dizaines étendues. Lancez un d120 puis vérifiez la valeur des unités : vous avez fait le résultat indiqué.
### d12 rapide avec un d120
Les nombres des dizaines étendues sont au nombre de 12 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ou 12) et peuvent sortir de manière équiprobable indépendamment du chiffre des unités. Lancez un d120 puis vérifiez la valeur des dizaines : vous avez fait le résultat indiqué.
### d15 rapide avec un d120
Les chiffres des unités sont au nombre de 10 (1, 2, 3, 4, 5, 6, 7, 8, 9 ou 0 (c-à-d. 10)) et peuvent sortir de manière équiprobable indépendamment du nombre des dizaines étendues. De même, tous les nombres des dizaines étendues ont une équiprobabilité d'être compris entre 1-4, 5-8 et 9-12 indépendamment du chiffre des unités. Lancez un d120 puis vérifiez si les valeurs sont ;
- Dizaines 1-4 et
- Unités 1-5 : vous avez fait le résultat indiqué,
- Unités 6-10 : soustrayez 5 à cette valeur et vous avez fait le résultat indiqué,
- Dizaines 5-8 et
- Unités 1-5 : vous avez fait le résultat indiqué que vous multipliez par 2,
- Unités 6-10 : soustrayez 5 à cette valeur et vous avez fait le résultat indiqué que vous multipliez par 2,
- Dizaines 9-12 et
- Unités 1-5 : vous avez fait le résultat indiqué que vous multipliez par 3,
- Unités 6-10 : soustrayez 5 à cette valeur et vous avez fait le résultat indiqué que vous multipliez par 3.
### d20 rapide avec un d120
Les chiffres des unités sont au nombre de 10 (1, 2, 3, 4, 5, 6, 7, 8, 9 ou 0 (c-à-d. 10)) et peuvent sortir de manière équiprobable indépendamment du nombre des dizaines étendues. De même, les nombres des dizaines étendues sont au nombre de 12 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ou 12) et ont une équiprobabilité d'être pairs ou impairs indépendamment du chiffre des unités. Lancez un d120 puis vérifiez si les valeurs sont ;
- Dizaines impaires : vous avez fait le résultat indiqué par les unités,
- Dizaines paires : vous avez fait le résultat indiqué par les unités que vous multipliez par 2.
### d24 rapide avec un d120
Les nombres des dizaines étendues sont au nombre de 12 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ou 12) et peuvent sortir de manière équiprobable indépendamment du nombre des unités. De même, les chiffres des unités sont au nombre de 10 (1, 2, 3, 4, 5, 6, 7, 8, 9 ou 10) et ont une équiprobabilité d'être pairs ou impairs indépendamment du nombre des dizaines étendues. Lancez un d120 puis vérifiez si les valeurs sont ;
- Unités impaires : vous avez fait le résultat indiqué par les dizaines étendues,
- Unités paires : vous avez fait le résultat indiqué par les dizaines étendues que vous multipliez par 2.
### d30 rapide avec un d120
Les chiffres des unités sont au nombre de 10 (1, 2, 3, 4, 5, 6, 7, 8, 9 ou 0 (c-à-d. 10)) et peuvent sortir de manière équiprobable indépendamment du nombre des dizaines étendues. De même, tous les nombres des dizaines étendues ont une équiprobabilité d'être compris entre 1-4, 5-8 et 9-12 indépendamment du chiffre des unités. Lancez un d120 puis vérifiez si les valeurs sont ;
- Dizaines 1-4 : vous avez fait le résultat indiqué par les unités,
- Dizaines 5-8 : vous avez fait le résultat indiqué par les unités que vous multipliez par 2,
- Dizaines 9-12 : vous avez fait le résultat indiqué par les unités que vous multipliez par 3.
### d40 rapide avec un d120
Les chiffres des unités sont au nombre de 10 (1, 2, 3, 4, 5, 6, 7, 8, 9 ou 0 (c-à-d. 10)) et peuvent sortir de manière équiprobable indépendamment du nombre des dizaines étendues. De même, tous les nombres des dizaines étendues ont une équiprobabilité d'être compris entre 1-3, 4-6, 7-9 et 10-12 indépendamment du chiffre des unités. Lancez un d120 puis vérifiez si les valeurs sont ;
- Dizaines 1-3 : vous avez fait le résultat indiqué par les unités,
- Dizaines 4-6 : vous avez fait le résultat indiqué par les unités que vous multipliez par 2,
- Dizaines 7-9 : vous avez fait le résultat indiqué par les unités que vous multipliez par 3,
- Dizaines 10-12 : vous avez fait le résultat indiqué par les unités que vous multipliez par 4.
### d60 rapide avec un d120
Les chiffres des unités sont au nombre de 10 (1, 2, 3, 4, 5, 6, 7, 8, 9 ou 0 (c-à-d. 10)) et peuvent sortir de manière équiprobable indépendamment du nombre des dizaines étendues. De même, tous les nombres des dizaines étendues ont une équiprobabilité d'être compris entre 1-2, 2-4, 4-5, 6-7, 8-9, 10-11 et 10-12 indépendamment du chiffre des unités. Lancez un d120 puis vérifiez si les valeurs sont ;
- Dizaines 1-2 : vous avez fait le résultat indiqué par les unités,
- Dizaines 3-4 : vous avez fait le résultat indiqué par les unités que vous multipliez par 2,
- Dizaines 5-6 : vous avez fait le résultat indiqué par les unités que vous multipliez par 3,
- Dizaines 7-8 : vous avez fait le résultat indiqué par les unités que vous multipliez par 4,
- Dizaines 9-10 : vous avez fait le résultat indiqué par les unités que vous multipliez par 5,
- Dizaines 11-12 : vous avez fait le résultat indiqué par les unités que vous multipliez par 6.
## d100 en deux lancers
Il est possible de simuler un d100 en deux lancer de d120. Le premier lancer représente le nombre des dizaines. Le second lancer correspond au chiffre des unités.
### Simuler un d100 avec deux d120
Pour cela simuler deux <a href="https://blog.lesieur.name/d120/#d10-rapide-avec-un-d120">d10</a>. Quand votre dé tombe sur une valeur comprise dans l'intervalle de la colonne de gauche, vous avez en réalité fait la valeur de la colonne du milieu pour le premier lancer et la valeur de la colonne de droite pour le second lancer.
<table>
<tbody>
<tr>
<th>Si vous faites entre … et … (inclus)</th>
<th>alors au 1er lancer le résultat est …</th>
<th>puis au 2nd lancer le résultat est …</th>
</tr>
<tr>
<td>1 - 12</td>
<td class="to">10</td>
<td class="to">+1</td>
</tr>
<tr>
<td>13 - 24</td>
<td class="to">20</td>
<td class="to">+2</td>
</tr>
<tr>
<td>25 - 36</td>
<td class="to">30</td>
<td class="to">+3</td>
</tr>
<tr>
<td>37 - 48</td>
<td class="to">40</td>
<td class="to">+4</td>
</tr>
<tr>
<td>49 - 60</td>
<td class="to">50</td>
<td class="to">+5</td>
</tr>
<tr>
<td>61 - 72</td>
<td class="to">60</td>
<td class="to">+6</td>
</tr>
<tr>
<td>73 - 84</td>
<td class="to">70</td>
<td class="to">+7</td>
</tr>
<tr>
<td>85 - 96</td>
<td class="to">80</td>
<td class="to">+8</td>
</tr>
<tr>
<td>97 - 108</td>
<td class="to">90</td>
<td class="to">+9</td>
</tr>
<tr>
<td>109 - 120</td>
<td class="to">0</td>
<td class="to">+10</td>
</tr>
</tbody>
</table>
## Utiliser un d120
Jusqu'à maintenant nous avons vu comment utiliser le d120 pour en faire un autre dé afin de l'adapter aux spécificités de vos statistiques. Cependant, l'utilité première d'un d120 est tout de même de faire un lancer parfaitement équilibré en terme de hasard sur 120 valeurs. Aussi voyons comment adapter vos statistiques pour qu'elles se jouent avec un d120 !
### Des stats de 1 à 120
La première utilisation est celle où vous adaptez les valeurs de vos statistiques pour qu'elles aillent de 1 à 120. Si par exemple dans votre jeu préféré les statistiques des personnages vont de 1 à 100 alors convertissez-les pour aller de 1 à 120. Voici un outil de conversion ou les valeurs sont adaptées (et arrondies le cas échéant).
Pour l'exemple avec des statistiques allant jusqu'à 100, il faut remplir le champ « Statistiques sur » avec __100__. Puis si, par exemple, vos réussites critiques vont jusqu'à 5, alors il faut remplir le champ « Si la valeur est de » avec __5__. Vous obtenez la nouvelle valeur de réussites critique sur 120 sur la ligne « elle devient ».
<div class="use-120">
<table>
<tr>
<td>Statistiques sur <input type="" name="" v-model="base"></td>
<td>converties sur <strong>{{ d120 }}</strong></td>
</tr>
<tr v-if="(base && base <= d120) && (base && base > 0)">
<td>Si la valeur est de <input type="" name="" v-model="custom"></td>
<td><span v-if="(custom && custom > 0)">elle devient <strong>{{ roundCustom }}</strong></span></td>
</tr>
</table>
<p>
<span v-if="(base && base > d120) || (base && base < 1)"><em>La valeur à convertir doit être supérieur à 0 et inférieure ou égale à {{ d120 }}.</em></span>
<span v-if="isNaN(base)"><em>La valeur à convertir doit être un nombre.</em></span>
<span v-if="(custom && custom < 1)"><em>La valeur à convertir doit être supérieur à 0.</em></span>
<span v-if="isNaN(custom)"><em>La valeur à convertir doit être un nombre.</em></span>
</p>
</div>
### Des stats de 1 à 100
Vous pourriez trouver que faire vos calcules sur des divisions par 120 est plutôt compliquée où du moins, pas aussi simple que de les faire sur 100. C'est pourquoi il est également possible d'utiliser son d120 en tant que d100 en un seul lancer (au détriment de l'équiprobabilité des résultats) et de se servir des valeurs restantes pour faire des actions spéciales (voir <a href="https://blog.lesieur.name/d120/#actions-supplémentaires">Actions supplémentaires</a>).
Pour l'exemple avec des statistiques allant jusqu'à 10, il faut remplir le champ « Statistiques sur » avec __10__. Puis si votre statistique de _Force_ est de 7, alors il faut remplir le champ « Si la valeur est de » avec __7__. Vous obtenez la nouvelle valeur sur la ligne « elle devient ».
<div class="use-100">
<table>
<tr>
<td>Statistiques sur <input type="" name="" v-model="base"></td>
<td>converties sur <strong>{{ 100 }}</strong></td>
</tr>
<tr v-if="(base && base <= 100) && (base && base > 0)">
<td>Si la valeur est de <input type="" name="" v-model="custom"></td>
<td><span v-if="(custom && custom > 0)">elle devient <strong>{{ roundCustom }}</strong></span></td>
</tr>
</table>
<p>
<span v-if="(base && base > 100) || (base && base < 1)"><em>La valeur à convertir doit être supérieur à 0 et inférieure ou égale à {{ 100 }}.</em></span>
<span v-if="isNaN(base)"><em>La valeur à convertir doit être un nombre.</em></span>
<span v-if="(custom && custom < 1)"><em>La valeur à convertir doit être supérieur à 0.</em></span>
<span v-if="isNaN(custom)"><em>La valeur à convertir doit être un nombre.</em></span>
</p>
</div>
#### Actions supplémentaires
Voici quelques idées d'utilisations.
##### Actions critiques
On peut introduire des plages de nombre dédiées aux actions critiques.
- Si votre lancer est entre 1 et 100, alors vous aurez fait la valeur indiquée sans jamais qu'il ne soit possible que cette valeur soit une réussite ou un échec critique.
- Si votre lancer est entre 101 et 110, alors vous aurez fait entre 91 et 100 mais en version échec (ou inversement) critique (à vous d'appliquer ce que cela implique).
- Si votre lancer est entre 111 et 120, alors vous aurez fait entre 1 et 10 mais en version réussite (ou inversement) critique (à vous d'appliquer ce que cela implique).
##### Bouclier
Imaginons une valeur de bouclier de 4 sur un ennemi. Tant qu'il a son bouclier, il faut faire moins de 40 pour le toucher. Dès qu'il n'a plus de bouclier, il faut faire moins de 80 par exemple. Les valeurs de 1 à 100 sont des valeurs normales. Les valeurs de 101 à 110 brise 1 bouclier et celle de 111 à 120 en brise 2 (par exemple). Dans ce cas, la valeur des unités multipliées par 10 correspond à la valeur initiale sur 100 et on ajoute +5 si le chiffre des dizaines est un 0.
Exemple : faire 103, signifie que vous retirez 1 bouclier et que vous avez fait 35 (3x10 + 5). Faire 112 signifie que vous retirez par exemple 2 boucliers et que vous faites 20 (2x10 + 0).
##### Modificateur
Le chiffre des unités peut être utilisé pour obtenir la valeur réel entre 1 et 10 tandis que les 12 dizaines permettent d'appliquer des modificateurs.
- Modificateur complet : ajoute (ou retire si malus) jusqu'à 12 au résultat des unités.
- Modificateur moitié : ajoute (ou retire si malus) jusqu'à 6 au résultat des unités. Il faut prendre l'écart entre la valeur obtenue et 6 pour les nombres égaux ou inférieur à 6 OU prendre l'écart entre 7 et la valeur obtenue pour les nombres égaux ou supérieures à 7.
- Modificateur tier : etc…
##### Choix de résultat
On peut utiliser par exemple le chiffre des unités et celui des dizaines comme deux valeurs séparé. Ainsi le résultat 95 donnera 9 et 5. Dans une situation de bonus, on peu imaginer que le joueur fait 9. Dans une situation de malus, on peut imaginer que le joueur fait 5. On peut également utiliser l'écart entre les nombres comme valeur réel et décider ici que le résultat est 4, etc.
## Acheter un d120 parfaitement équilibré
Après tout cela, vous vous demandez peut-être où vous procurrez un tel dé ?
Vous pourrez l'obtenir sur [la boutique en ligne](https://www.mathartfun.com/DiceLabDice.html) de [The Dice Lab](http://thedicelab.com/). Il vous est proposer de les acheter à l'unité où par lot de 5.
</div>
.article table, .article tr, .article th, .article td {
border: 1px solid #e0e0e0;
border-collapse: collapse;
border-radius: .2857rem;
}
.article table {
width: 100%;
}
.article .h3 {
margin-top: 24px;
}
.article th {
font-weight: normal;
}
.article td, .article th {
padding: 4px 8px;
}
.article .to {
text-align: center;
position: relative;
}
.article .to small.plus {
display: none;
position: absolute;
top: 0;
left: 100%;
width: 320px;
}
.article .to.info {
cursor: help;
}
.article .dice-suite {
cursor: pointer;
font-weight: bold;
}
.article .to:hover small.plus {
padding: 8px;
text-align: left;
background-color: #FFF;
display: block;
position: absolute;
top: -1px;
left: auto;
right: 100%;
border-radius: .2857rem;
border: 1px solid #e0e0e0;
box-shadow: 0 0 10px 2px #e0e0e0
}
.article .a {
color: #48739e;
}
.article .a:hover {
color: #c00;
}
article.article li > ul {
margin: 0 0 16px 0;
}
var d120 = 120;
new Vue({
el: ".standards",
data: {
d120: d120
},
methods: {
isPure: function (value) {
return this.d120 / value === Math.floor(this.d120 / value);
},
diceList: function() {
var createD = [];
for (var i = 0; i < this.d120 - 1; i++) {
obj = {}
obj.value = i + 1;
obj.pure = false;
if (this.isPure(i + 1)) {
obj.pure = true;
}
if (obj.pure) {
createD.push(obj);
}
}
return createD;
},
tableList: function(d) {
var createD = [],
obj,
base,
temp = 0;
for (var i = 1; i <= d; i++) {
base = ((this.d120) * i) / d;
obj = {}
obj.to = i;
obj.fromLower = temp;
obj.fromUpper = base;
obj.fromLowerDisplay = Math.floor(obj.fromLower) + 1;
obj.fromUpperDisplay = Math.floor(obj.fromUpper);
createD.push(obj);
temp = obj.fromUpper;
}
return createD;
}
}
});
new Vue({
el: ".custom",
data: {
d120: d120,
custom: '',
customFilter: '',
valueA: '',
valueX: '',
multiplicator: 1,
distribution: {},
},
computed: {
customInt: function () {
return parseInt(this.custom, 10);
},
multiplicatorInt: function () {
return parseInt(this.multiplicator, 10);
},
customFilterInt: function () {
return parseInt(this.customFilter, 10);
},
customA: function () {
return parseInt(this.valueA, 10);
},
customX: function () {
return parseInt(this.valueX, 10);
}
},
methods: {
async getDistribution () {
const formData = new FormData();
formData.append('program', 'output 1d1');
this.distribution = await fetch('https://anydice.com/calculator_limited.php', {
method: 'POST',
body: formData,
})
},
diceSuite: function () {
var vm = this,
max = this.customA * this.customX,
listD120 = [];
function addDice(max) {
var limit = max / d120,
number,
isTransformed = true;
if (limit > 1) {
number = Math.ceil(limit);
if (max / number === Math.floor(max / number)) {
return {
A: number,
X: max / number
};
} else {
return {
A: vm.customA,
X: vm.customX
};
}
} else {
return {
A: 1,
X: max
};
}
}
if (this.customA > 0 && this.customX) {
return addDice(this.customA * this.customX);
}
return "";
},
goToTable: function () {
this.custom = this.diceSuite().X;
this.multiplicator = this.diceSuite().A;
this.customFilter = "";
location.href = "https://blog.lesieur.name/d120/#simuler-un-dé-personnalisé-avec-un-d120";
},
isPure: function (value) {
return this.d120 / value === Math.floor(this.d120 / value);
},
tableList: function(d) {
var vm = this,
createD = [],
offset = this.d120 / this.custom,
offsets = [],
indice = 0,
delta = this.isPure(this.customInt) ? 0 : 0.55555555555555,
to = 0,
list = "";
for (var i = 0; i < this.custom; i++) {
offsets[i] = (((i + 1) * this.d120) / this.custom) + delta;
}
for (var i = 0; i < this.d120; i++) {
if (i + 2 <= offsets[indice]) {
to = indice + 1;
toPlus = undefined;
list = ""
} else {
to = parseInt(indice + 1, 10);
toPlus = parseInt(indice + 1 !== this.customInt ? indice + 2 : 1, 10);
list = ((offsets[indice] + "").split('.')[1] || '').split('').join('-');
indice++;
}
createD.push({ from: i + 1, to: to, toPlus: toPlus, list: list });
}
if (this.customFilterInt > 0 && this.customFilterInt <= this.d120) {
return createD.filter(function (a) {
return a.from === vm.customFilterInt;
});
} else {
return createD;
}
}
}
});
new Vue({
el: '.use-120',
data: {
d120: d120,
base: 100,
custom: 5
},
computed: {
roundCustom: function () {
return Math.round((this.custom * this.d120) / this.base)
}
}
});
new Vue({
el: '.use-100',
data: {
base: 10,
custom: 7
},
computed: {
roundCustom: function () {
return Math.round((this.custom * 100) / this.base)
}
}
});
/*var d120 = 120;
var dX = 7;
var offset = d120 / dX;
var offsets = [];
var indice = 0;
var input = [];
var output = [];
var delta = 0.55555555555555;
var result = 0;
for (var i = 0; i < dX; i++) {
offsets[i] = (((i + 1) * d120) / dX) + delta;
}
console.log(offsets);
console.log(1, offsets[0] - delta, '=', offsets[0], ' - ', delta);
for (var k = 0; k < offsets.length - 1; k++) {
console.log(k + 2, offsets[k + 1] - offsets[k], '=', offsets[k + 1], ' - ', offsets[k]);
}
for (var i = 0; i < d120; i++) {
if (i + 2 < offsets[indice]) {
result = indice + 1;
} else {
result = parseInt(indice + 1, 10) + " ou " + parseInt((indice + 1 !== dX) ? indice + 2 : 1, 10) + " [" + ((offsets[indice] + "").split('.')[1] || '').split('').join('-') + "]";
indice++;
}
console.log(i + 1, result);
}*/
Also see: Tab Triggers