ForHosting KIT · Outils pour développeurs

Collisions de hachage attendues

Répartissez 100 clés dans 128 cases et, en moyenne, plus de la moitié des clés finissent par partager une case, pour un facteur de charge de 0,78125. Vous obtenez aussi les clés seules, les cases vides ou occupées, le surplus et les collisions par paires. Gratuit dans votre navigateur.

  • Gratuit
  • Fonctionne dans votre navigateur
  • Sans inscription
  • Vos données restent sur votre appareil
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt
Si vous saisissez
N
100
M
128
Vous obtenez
Facteur de charge
0,78125
Clés en collision attendues
53,9975057729
Clés isolées attendues
46,0024942271
Seaux occupés attendus
69,5768323316

Lorsque l'on disperse n clés distinctes de façon uniforme dans m cases, certaines partagent un emplacement même à un facteur de charge modeste. L'intuition sous-estime l'occupation : on retient la probabilité du paradoxe des anniversaires qu'au moins une paire entre en collision, puis on traite cette probabilité comme un dénombrement. Cette calculatrice de collisions de hachage attendues répond à une autre question de dimensionnement. Elle s'appuie sur le modèle classique des boules et des urnes — chaque élément choisit une des m cases de manière indépendante et uniforme — et renvoie le nombre attendu de clés en collision, c'est-à-dire celles qui ne sont pas seules dans leur case. À côté de ce chiffre principal, elle indique les clés singleton, les cases occupées et vides, les clés de débordement au-delà du premier occupant, les collisions par paires et le facteur de charge n divisé par m. L'arithmétique est une identité sous forme fermée évaluée en espace logarithmique, entièrement déterministe, sans échantillonnage Monte Carlo ni modèle de langage. Servez-vous-en pour dimensionner une table de hachage, régler un facteur de charge, comparer un espace de hachage 32 bits à un espace plus étroit, ou vérifier une affirmation d'occupation de manuel avant d'engager de la mémoire.

Ce que mesurent les clés en collision attendues dans le modèle boules et urnes

Jetez n boules de façon indépendante et uniforme dans m urnes : vous obtenez le modèle standard d'un hachage uniforme. Une clé en collision est une boule qui partage son urne avec au moins une autre. Ce n'est pas la même grandeur que la probabilité du paradoxe des anniversaires qu'au moins deux boules partagent une urne, ni le nombre de coïncidences par paires.

Pour planifier une capacité, on veut en général un dénombrement : combien de clés, en moyenne, n'obtiennent pas un emplacement privé, combien de cases restent vides tandis que d'autres débordent, et combien de clés supplémentaires s'empilent sur le premier occupant. La linéarité de l'espérance donne des réponses nettes sans simulation. Fixez une clé quelconque.

Les n moins une autres manquent la case de cette clé avec la probabilité un moins un sur m, si bien que la chance que la clé choisie soit singleton vaut (1 − 1/m) élevée à n moins un. Multipliez par n : vous avez le nombre attendu de clés singleton. Soustrayez de n : vous avez le nombre attendu de clés en collision, soit n fois un moins (1 − 1/m) à la n moins un.

Le même argument d'occupation donne le nombre attendu de cases vides, m fois (1 − 1/m) à la n, donc celui des cases occupées. Les clés de débordement sont les éléments au-delà du premier dans chaque case occupée, égales à n moins occupées. Les collisions par paires valent n parmi deux divisé par m, car toute paire donnée tombe ensemble avec la probabilité un sur m.

Le facteur de charge est simplement n sur m. Ensemble, ces chiffres indiquent si une table proposée manque de cases, est seulement occupée, ou paie déjà une taxe de longueur de chaîne qu'un m plus grand supprimerait.

Contrat d'entrée, formules, stabilité numérique et erreurs

Envoyez deux entiers obligatoires : n, le nombre d'éléments, et m, le nombre de cases. Les deux valeurs doivent être des entiers finis dans les limites publiées : n de un à un billion, et m de un à un billion, ce qui couvre les exemples de cours, les maps en mémoire et un espace de hachage 32 bits complet de quatre milliards deux cent quatre-vingt-quatorze millions neuf cent soixante-sept mille deux cent quatre-vingt-seize emplacements.

Après validation, le moteur évalue les puissances de un moins un sur m en espace logarithmique comme l'exponentielle de l'exposant fois log1p de moins un sur m, afin que de grands n et m ne s'effondrent pas vers un zéro silencieux comme le ferait une boucle naïve de multiplications.

Les cas particuliers restent exacts : un seul élément ne collisionne jamais ; une seule case avec deux éléments ou plus fait collisionner toutes les clés ; un exposant zéro est traité comme un, pour que (1 − 1/m) à la puissance zéro ne devienne pas un zéro puissance zéro indéterminé. C'est un oracle de dénombrement attendu sous un hachage uniforme et indépendant, non un simulateur d'une fonction de hachage particulière ni une calculatrice de probabilité de collision.

Planification de capacité, limites, tarif et où les chiffres servent

Utilisez l'outil du navigateur lorsque vous choisissez la taille d'une table, comparez des facteurs de charge ou expliquez à une équipe pourquoi un facteur de charge égal à un laisse encore une grande part de clés partager une case. Augmentez m jusqu'à ce que les clés en collision attendues ou les clés de débordement passent sous votre budget de niveau de service, puis gardez une marge de croissance.

Contrastez le résultat avec une probabilité du paradoxe des anniversaires si vous avez aussi besoin de la chance qu'une collision existe ; cette probabilité sature près de un bien avant que le dénombrement attendu de clés en collision devienne grand, c'est pourquoi les deux outils répondent à des tickets distincts. Les résultats sont pleinement déterministes : les mêmes n et m donnent toujours le même vecteur d'occupation, de sorte que vous pouvez figer des exemples dans des tests et des supports de cours.

Il n'y a ni modèle de langage, ni service externe de statistique, ni aléatoire. Branchez le point d'accès à des tutoriels de tables de hachage, des planificateurs de fragments de cache, des contrôles d'occupation proches de Bloom ou des oracles d'entretien de programmation où vous préférez les identités exactes boules et urnes à des histogrammes d'échantillonnage approximatif qui ne se stabilisent jamais tout à fait.

Dimensionnement de tables de hachage et de maps

Prenez n égal au nombre de clés de l'ensemble de travail et faites varier m (emplacements de la table) jusqu'à ce que les clés en collision attendues et les clés de débordement restent sous votre budget de latence.

Occupation des fragments et partitions de cache

Traitez les fragments comme des cases et les clés entrantes comme des boules pour estimer combien de clés partagent une partition chaude avant d'ajouter de la capacité ou de relancer le hachage.

Oracles déterministes pour leçons et tests

Cours, plateformes d'entretien et suites de CI appellent un oracle d'occupation stable qui refuse n ou m inférieurs à un et renvoie des champs identiques pour des entrées identiques.

Qu'est-ce qu'une clé en collision dans cette calculatrice ?

Une clé qui n'est pas seule dans sa case. Le dénombrement attendu vaut n moins le nombre attendu de singletons. C'est un dénombrement attendu, non la probabilité qu'au moins une paire entre en collision.

En quoi cela diffère-t-il du paradoxe des anniversaires ?

Le paradoxe des anniversaires renvoie P(au moins un jour partagé). Cet outil renvoie des dénombrements d'occupation attendus pour régler le hachage : clés en collision, débordement, cases vides et collisions par paires sous le modèle boules et urnes.

Que se passe-t-il si n ou m est inférieur à 1 ?

Au moins un élément et au moins une case sont exigés ; zéro et les valeurs négatives sont refusés et non facturés.

La calculatrice de collisions de hachage attendues est-elle gratuite ?

L'outil du navigateur s'exécute gratuitement sur votre appareil.

Combien de cases restent vides en moyenne ?

La valeur attendue est le nombre de cases multiplié par la probabilité qu'aucune clé ne tombe dans une case donnée. Avec 100 clés dans 128 cases, près de la moitié des cases restent vides, alors que plus de la moitié des clés partagent leur place.

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.

POSThttps://api.kit.forhosting.com/dev/hash-expected-collisions

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é.

curl -X POST https://api.kit.forhosting.com/dev/hash-expected-collisions \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"n":100,"m":128}'
{
  "n": 100,
  "m": 128
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.hash_expected_collisions",
  "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.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

max_n1000000000000
max_m1000000000000
HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Contrat d'entrée, formules, stabilité numérique et erreurs

Les alias items, keys ou balls pour n, et buckets ou bins pour m, sont acceptés. Champs manquants, non entiers, n ou m inférieurs à un et valeurs au-dessus des maxima échouent avec invalid_input et ne sont pas facturés. Le corps JSON répète n et m, puis renvoie load_factor, expected_colliding_keys, expected_singleton_keys, expected_occupied_buckets, expected_empty_buckets, expected_collision_buckets, expected_overflow_keys, expected_pairwise_collisions et une chaîne formula qui reformule les deux identités principales.

Planification de capacité, limites, tarif et où les chiffres servent

Utilisez l'API lorsqu'un script, un bac à sable d'entretien, un carnet de réglage de base ou un contrôle d'intégration continue a besoin d'un JSON stable pour de nombreuses paires (n, m) sous un même contrat. Chaque requête réussie est un article facturable à $0.002 ; une validation en échec ne consomme pas le solde. Les plages publiées gardent l'évaluation sous forme fermée dans des doubles IEEE-754 ordinaires tout en couvrant toute table de hachage que l'on dimensionnerait à la main.

Comment estimer les collisions de hachage attendues pour n clés et m cases ?

Envoyez les entiers n (éléments) et m (cases) à dev.hash_expected_collisions. La réponse inclut expected_colliding_keys = n*(1-(1-1/m)^(n-1)), plus occupées, vides, débordement, par paires et load_factor.

Consulter la documentation complète du KIT →