mercredi 27 avril 2022

randomisation in python within a group for A/B test

I have a python list of size 67 with three unique values with following distribution

A - 20 occurrences randomly spread in the list
B - 36 occurrences randomly spread in the list
C - 11 occurrences randomly spread in the list

I want to perform random selection at 10% within each group to perform a special treatment on the values selected from randomisation.

Based on the occurrences in the list shown above, 2 treatments for group A, 3 treatments for B and 1 treatment for C should have been done.

Selection for treatment need not be done exactly on the 10th occurrence of a value but the ratio of treatment to values should be maintained at approximately 10%.

Right now, I have this code

import random 
if random.random() <= 0.1
   do something

Using this code, doesn't get me above requirement treatments at a group level. Instead it randomly picks treatments across all groups. I want to trim the selection of random samples at a group level. How do I do that?

Also, if this list were dynamic and keeps getting bigger and bigger and populated with more values of A,B,C at run time albeit with different distributions, how can I still maintain the randomisation at a group (unique value in the list) level.




Aucun commentaire:

Enregistrer un commentaire