Calculateur de sous-factorielle
Comptez les dérangements de n éléments, les arrangements où rien ne reste à sa place d'origine : la sous-factorielle de 4 vaut 9, et vous obtenez aussi la probabilité qu'un mélange au hasard en soit un. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Nombre d’éléments n
- 0
- Nombre de dérangements
- 1
- Probabilité de dérangement
- 1
Calcule la sous-factorielle ! n, le nombre de dérangements de n éléments — les permutations dans lesquelles rien ne reste à sa position d'origine. À partir d'un entier n, l'outil renvoie le nombre de dérangements et la probabilité qu'une permutation aléatoire soit un dérangement.
Ce que compte la sous-factorielle et la série employée
La sous-factorielle ! n compte les dérangements : les permutations de n éléments distincts dans lesquelles aucun élément ne demeure à sa position d'origine. Cette capacité l'évalue à partir de la série alternée !
n = n! · Σ (−1)^k / k! pour k allant de 0 à n, le résultat classique du principe d'inclusion-exclusion. L'implémentation accumule cette somme terme à terme tout en construisant k!
de façon incrémentale, puis multiplie par n! et arrondit à l'entier le plus proche pour absorber le bruit de calcul flottant : la valeur renvoyée est ainsi un décompte entier exact. Les premières valeurs sont !
0 = 1, ! 1 = 0, ! 2 = 1, ! 3 = 2, ! 4 = 9 et ! 5 = 44.
L'unique permutation vide de zéro élément est un dérangement par vacuité, d'où ! 0 = 1, tandis qu'un élément unique ne peut jamais bouger, d'où ! 1 = 0.
La probabilité de dérangement et son lien avec 1/e
En plus du décompte, l'outil renvoie probability, la probabilité qu'une permutation de n éléments tirée uniformément au hasard soit un dérangement, calculée comme value / n! Comme la série ci-dessus est exactement le développement de Taylor tronqué de e^(−1), cette probabilité converge très vite vers 1/e ≈ 0,367879 à mesure que n croît. Elle en est déjà proche pour de petits n : !
4 = 9 sur 4! La probabilité est arrondie half-up à six décimales par défaut. C'est là le cœur mathématique du classique problème du vestiaire ou du Père Noël secret, où la réponse ne change presque plus dès que le groupe dépasse une poignée de personnes.
Plage d'entrée, arrondi et validation
La seule entrée requise est n, qui doit être un entier de 0 à 20. La borne supérieure de 20 est délibérée : 20! vaut environ 2,43 × 10^18, à la limite de ce qu'un flottant en double précision représente exactement ; plafonner n maintient donc le décompte entier de dérangements exact plutôt que de perdre silencieusement de la précision.
Le paramètre facultatif decimals pilote l'arrondi half-up de la probabilité.
Cas d’usage
Père Noël secret et échanges de cadeaux
Calculez la probabilité qu'un tirage aléatoire n'attribue personne à lui-même, ou comptez les dérangements valides, avant de lancer une répartition de cadeaux ou de partenaires.
Travaux de combinatoire
Produisez des valeurs !n exactes et la probabilité issue de l'inclusion-exclusion pour bâtir des corrigés ou vérifier des formules dérivées face à la série sous forme close.
Conception de tests randomisés
Quantifiez la probabilité qu'une permutation mélangée laisse un élément en place, utile pour générer des brouillages qui doivent déplacer chaque élément.
Questions fréquentes
Qu'est-ce qu'une sous-factorielle ?
La sous-factorielle ! n est le nombre de dérangements de n éléments — les permutations où aucun élément ne reste à sa position d'origine — donné par n! ·Σ(−1)^k/k!.
Pourquoi !0 vaut-il 1 et !1 vaut-il 0 ?
La permutation vide de zéro élément est un dérangement par vacuité, d'où ! 0 = 1 ; un élément unique ne peut éviter sa propre place, d'où ! 1 = 0.
Qu'est-ce que la probabilité de dérangement ?
C'est value / n!, la probabilité qu'une permutation aléatoire soit un dérangement. Elle converge rapidement vers 1/e ≈ 0,367879 quand n augmente.
Quelles valeurs de n sont autorisées ?
n doit être un entier de 0 à 20 ; ce plafond maintient le décompte exact en double précision.
De combien de façons 5 personnes peuvent-elles tirer des noms sans que personne ne tire le sien ?
De 44 façons, la sous-factorielle de 5. Pour quatre personnes, c'est 9 tirages sur 24 possibles, et le calculateur traduit cette part en probabilité, 0,375, pour juger un tirage de Père Noël secret avant de le lancer.
Outils associés
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/math/subfactorial \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":4}'const res = await fetch("https://api.kit.forhosting.com/math/subfactorial", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/subfactorial",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/subfactorial", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/subfactorial", 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
{
"n": 4
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.subfactorial",
"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.
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. |
Notes techniques
La probabilité de dérangement et son lien avec 1/e
(et définie à 1 pour n = 0). = 24 donne 0,375, et dès n = 6 ou 7 la valeur est indiscernable de 1/e à la précision courante.
Plage d'entrée, arrondi et validation
Un non-entier, une valeur négative ou n supérieur à 20 déclenche une erreur typée invalid_input avec le message "n inválido", ce qui permet à un formulaire ou à un client de réagir sur le code d'erreur sans analyser de texte. Les sorties sont déterministes — un même n donne toujours les mêmes value et probability —, si bien que les résultats font aussi office de jeux de non-régression stables, comme l'exemple fourni n = 0 renvoyant value 1 et probability 1.
Questions techniques
Est-ce gratuit et comment l'automatiser ?
Le widget tier A s'exécute gratuitement dans votre navigateur ; l'API déterministe renvoie les mêmes value et probability en JSON à partir de $0.002 par appel.