> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gérer l'allocation d'une variation selon un identifiant utilisateur

> Remplacez l'assignation de variation par défaut de Kameleoon pour fournir des variations cohérentes aux utilisateurs authentifiés sur tous les appareils en utilisant un identifiant utilisateur unique.

Kameleoon alloue par défaut une variation à un visiteur de manière aléatoire. Le [document statistique](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/pdf/statistics-at-kameleoon.pdf) explique la logique de l'algorithme d'assignation dans la section « Kameleoon's assignation algorithm ». La fonction par défaut est la suivante :

```
function (experiment)
{
  var registeredVariationId;
  var deviationRandom = experiment.obtainVariationAssignmentRandomNumber();
  var total = 0.0;
  for (var i = 0, l = experiment.variations.length; i < l; ++i)
  {
      total += experiment.variations[i].deviation;
      if (deviationRandom <= total)
      {
          registeredVariationId = experiment.variations[i].id;
          break;
      }
  }
  return registeredVariationId != null ? registeredVariationId : "none";
}
```

Écrasez la fonction par défaut pour modifier la façon dont Kameleoon sélectionne et affiche les variations. Les sites Web sécurisés peuvent utiliser cette méthode pour afficher des variations cohérentes aux utilisateurs connectés sur toutes les plateformes et tous les appareils :

```
function(experiment)
{
 var memberId = window.member_id.toString(); //CODE to update with your variable that contains the unique identifier. It has to be available before calling the Kameleoon snippet
 memberId = memberId + experiment.id.toString();
 var hash = 0;
 for (i = 0; i < memberId.length; ++i)
 {
 char = memberId.charCodeAt(i);
 hash = ((hash << 5) - hash) + char;
 hash = hash & hash;
 }
 hash = (Math.abs(hash) * 9301 + 49297) % 233280;
 var deviationRandom = hash / 233280;
 var total = 0.0;
 for (var i = 0, l = experiment.variations.length; i < l; ++i)
 {
 total += experiment.variations[i].deviation;
 if (deviationRandom <= total)
 {
 chosenVariationId = experiment.variations[i].id;
 break;
 }
 }
return registeredVariationId != null ? registeredVariationId : "none";
}
```

Ajoutez le code personnalisé aux options avancées du compte :

1. Connectez-vous au [compte Kameleoon](https://login.kameleoon.com/app).
2. Cliquez sur **Admin** > **Projets**.
3. Cliquez sur **Configuration** sur la carte du site Web.

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/variations-allocation/website-configuration.png)
</Frame>

4. Ajoutez le script ci-dessus dans le champ **Script de sélection de variation**.

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/variations-allocation/variation-selection-script.png)
</Frame>
