Probabilité d’une somme de dés au plus
Ce calculateur détermine la probabilité cumulée que plusieurs dés équitables et identiques donnent une somme inférieure ou égale à une valeur choisie.
Lancer gratuitement
Au lieu d’estimer la réponse avec des lancers simulés, il compte tous les résultats possibles en arithmétique entière exacte. Indiquez le nombre de dés, le nombre de faces de chaque dé et un seuil inclusif. Le résultat fournit les issues favorables, toutes les issues, une fraction réduite, une probabilité décimale et un pourcentage, utiles pour concevoir des jeux, enseigner les probabilités et bâtir des moteurs de règles fiables.
Comprendre l’événement calculé
Un événement « au plus » comprend le seuil lui-même et tous les totaux inférieurs. Avec deux dés à six faces et un seuil de sept, par exemple, la question est P(somme ≤ 7) : les totaux deux, trois, quatre, cinq, six et sept sont donc favorables. Ce calcul diffère d’une demande portant exactement sur sept, qui ne retient qu’un total, et d’une demande portant sur sept ou plus, qui englobe sept à douze. Chaque dé est supposé équitable, indépendant et marqué d’entiers consécutifs allant de un au nombre de faces choisi. Le lancer de n dés à s faces crée ainsi s^n issues ordonnées équiprobables. Le calculateur dénombre celles qui se situent entre le minimum possible et le seuil inclusif, puis divise ce nombre favorable par la taille de l’espace d’échantillonnage complet. Un seuil sous le minimum donne correctement une probabilité nulle, tandis qu’un seuil égal ou supérieur au maximum donne une probabilité de un. Ces valeurs limites sont des réponses valides, et non des erreurs, ce qui facilite l’emploi de seuils produits dynamiquement par d’autres règles.
Fonctionnement du décompte cumulé exact
Le calcul repose sur une programmation dynamique bornée, jamais sur des essais aléatoires. Il part d’une seule façon d’obtenir zéro avant le lancer du moindre dé. Pour chaque dé, il construit la table suivante en ajoutant chaque face autorisée à tous les totaux déjà accessibles. Une fenêtre glissante regroupe efficacement ces contributions, tandis que des entiers de précision arbitraire empêchent tout arrondi du nombre d’issues. Une fois tous les dés traités, le moteur additionne les décomptes des totaux qui ne dépassent pas le seuil choisi. Le nombre total d’issues est calculé séparément en élevant le nombre de faces à la puissance correspondant au nombre de dés. Le plus grand commun diviseur réduit le rapport entre issues favorables et issues totales à sa fraction exacte la plus simple; une division entière déterministe produit aussi des valeurs décimales et des pourcentages lisibles. Cette méthode rend la même réponse à chaque exécution et évite l’erreur d’échantillonnage de Monte Carlo. Même une longue simulation peut manquer des extrémités rares ou fluctuer; la récurrence exacte ne le peut pas. Les limites publiées bornent le temps et la mémoire tout en couvrant les dés usuels et de grands ensembles personnalisés.
Exploiter le résultat dans un jeu, un cours ou un logiciel
Renseignez dice avec le nombre de dés identiques, sides avec le nombre de faces et at_most avec le seuil inclusif. Lisez probability_fraction lorsqu’une valeur rationnelle exacte est nécessaire, probability pour une écriture décimale compacte et probability_percent pour afficher un pourcentage. favorable_outcomes et total_outcomes exposent les décomptes sous-jacents sous forme de chaînes, afin que les grands entiers restent intacts dans les clients JSON. Vous pouvez comparer la fréquence à laquelle une réserve de dés reste sous un plafond, estimer le déclenchement d’une condition de faible lancer ou ajuster un seuil avant de publier une règle. Dans un cours, vous pouvez illustrer les distributions cumulées et confronter la réponse exacte à une simulation. Une équipe de développement peut figer la réponse déterministe dans ses tests ou appeler le calcul depuis un service de score sans maintenir de tables. Le navigateur exécute localement la même fonction pure. Chaque élément réussi via l’API coûte $0.002. Les dés pondérés, explosifs, relancés ou de tailles mélangées ne sont pas pris en charge, car ces mécaniques modifient l’espace d’échantillonnage et exigent un autre modèle.
Cas d’usage
Équilibrer une mécanique de faible lancer
Mesurez la probabilité exacte qu’une réserve de dés reste au seuil de déclenchement ou en dessous avant de finaliser une règle.
Enseigner la probabilité cumulée
Montrez comment les issues favorables s’additionnent pour tous les totaux jusqu’au seuil choisi, seuil compris.
Tester un moteur de règles déterministe
Employez des fractions et des décomptes stables comme fixtures pour un logiciel qui évalue des seuils de dés équitables.
Questions fréquentes
« Au plus » inclut-il la valeur choisie ?
Oui. Cette expression signifie inférieur ou égal au seuil; le total choisi fait donc partie des issues favorables.
Les résultats sont-ils exacts ou simulés ?
Ils sont exacts. L’algorithme compte les issues avec des entiers de précision arbitraire, sans hasard ni échantillonnage.
Quels dés le calculateur suppose-t-il ?
Il suppose des dés identiques, indépendants et équitables, dont les faces sont numérotées consécutivement de 1 au nombre choisi.
Que se passe-t-il si le seuil est impossible ?
Un seuil sous la somme minimale renvoie une probabilité nulle; un seuil égal ou supérieur à la somme maximale renvoie un.
Quel est le prix d’un calcul par API ?
Chaque élément traité avec succès par l’API coûte $0.002. Le même calcul déterministe est proposé dans le navigateur.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/hobby/game-dice-sum-at-most \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"dice":2,"sides":6,"at_most":7}'const res = await fetch("https://api.kit.forhosting.com/hobby/game-dice-sum-at-most", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"dice": 2,
"sides": 6,
"at_most": 7
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/game-dice-sum-at-most",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"dice": 2,
"sides": 6,
"at_most": 7
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/game-dice-sum-at-most", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"dice":2,"sides":6,"at_most":7}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"dice":2,"sides":6,"at_most":7}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/game-dice-sum-at-most", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"dice": 2,
"sides": 6,
"at_most": 7
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.game_dice_sum_at_most",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_dice | 50 |
max_sides | 100 |
max_sum | 5000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |