Question

Je suis en cours d'exécution n tests fractionnés sur un site Web. Je veux attribuer un ID utilisateur entier uniformément distribué à l'un des seaux n, et donc le même déterministe utilisateur obtient toujours le même test.

À ce stade, je peux simplement choisir un index dans la liste des tests fractionnés par modding l'ID utilisateur par n. Que faire si je veux poids certains tests?

Par exemple, un seau n ° 1/21 est affecté 90% du temps, et les 20 essais restants sont affectés 0,5% du temps.

Je sens que je peux en quelque sorte l'échelle la taille de ma liste et toujours utiliser la technique mod pour ce faire, mais avoir des listes potentiellement énormes, temporaires en mémoire semble inélégant.

Était-ce utile?

La solution

Si la plupart des seaux ont des dimensions distinctes, où la taille est définie en pourcentage de ids, alors vous devrez représenter cette mémoire en quelque sorte. Sinon, sinon comment allez-vous savoir ces pourcentages?

Une solution à utiliser est d'avoir, disons 100 seaux virtuels, chacun représentant 1% des ids. Ensuite, associé 90 des seaux virtuels à seau # 1/21. Ensuite, vous pouvez effectuer un mod 100 et si elle tombe dans les seaux virtuels poing 90, attribuer l'id seau # 1. Vous pouvez obtenir le nombre optimal de seaux virtuels en divisant le pourcentage de chaque seau par le GCD de tous les pourcentages, qui est en votre exemple 0.5 (GCD (90, 0,5)).

De votre exemple, il n'y a qu'une seule taille de seau distincts bien. La meilleure solution dépend vraiment de quels types d'arrangements que vous pourriez avoir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top