oTree Forum >

unequal treatment assignment

#1 by tae_yn

Hi, I would like to assign 11 people to A, B, and C group. However, I would like to assign 5 people to A, 5 people to B, and 1 person to C group. I tried the following code from the tutorial, yet I think the random.choice involves replacement of elements. what could be the solution? 

    # def creating_session(self):
    #     for player in self.get_players():
    #         player.type = random.choice(['A', 'A', 'A', 'A', 'A',
    #     'B', 'B', 'B', 'B', 'B', 'C'])
    #         print('set player.type to', player.type)

#2 by ccrabbe

Hi tae_yn -

If you assign that array to a variable name like 'typelist' and then set player.type to an element chosen randomly with random.choice, and then *remove* that chosen element from typelist, then you will be choosing without replacement.

so:

typelist = [A,A,A,...]
for p in subsession.get_players():
    p.type = random.choice(typelist)
    typelist.remove(p.type)

... that should do it.

Thanks,
--Chris

#3 by tae_yn

Thank you!

Write a reply

Set forum username