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

# Gestionar la asignación de una variación según criterios específicos

> Sobrescriba el algoritmo de asignación de variaciones por defecto de Kameleoon para asignar variaciones en función de criterios personalizados en JavaScript, como variables predefinidas.

Kameleoon asigna una variación a un visitante de forma aleatoria por defecto. El [paper estadístico](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/pdf/statistics-at-kameleoon.pdf) explica la lógica del algoritmo de asignación en la sección "Kameleoon's assignation algorithm". La función por defecto es la siguiente:

```
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 ? registeredVariationId : "none";
}
```

Sobrecargue esta función para cambiar cómo Kameleoon selecciona y muestra las variaciones. Por ejemplo, a menudo resulta útil seleccionar una variación según una variable JavaScript:

```
function(experiment)
{
 if(experiment.id == "ID TEST"){ //código para el experimento al que desea aplicar un comportamiento específico. Debe adaptarse a su caso de uso
 if(typeof versionTest != "undefined") { //la variable versionTest debe estar disponible antes de cargar Kameleoon. De lo contrario, no funcionará.
 if(versionTest == 1)
 return 81103; //ID de la variación 1
 else if(versionTest == 2)
 return 81104; //ID de la variación 2
 else if(versionTest == 3)
 return 81105; //ID de la variación 3
 else if(versionTest == 4) //ID de la variación 4
 return 81106;
 }
 }
 else{ //se aplica el comportamiento por defecto para el resto de experimentos
 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 ? registeredVariationId : "none";
 }
}
```

Añada el código personalizado a la cuenta:

1. En el menú lateral izquierdo, vaya a **Admin** > **Projects**.

2. Haga clic en **Configuration** en la tarjeta del sitio web.

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

3. Haga clic en **Experiment**.

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

4. Añada el script en el campo **Variation selection script**.

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