oTree Forum >

Shuffle radio button choices, but record the order in which they appeared as a player var

#1 by prm74

Hi,

I have a simple radio button survey question, with 4 options. I use random and shuffle to change the order of the options, and on the HTML simply say {{ formfields.}} However is there a way I can record exactly in which order a participant saw those 4 radio buttons?

Below I attach my code. 

selfprofile = models.IntegerField(label="Which of the following profiles best match you?", widget=widgets.RadioSelect,
                               choices=[[1, 'LL'], [2, 'LH'], [3, 'HL'], [4, 'HH']],
                                     )


# FUNCTIONS

def selfprofile_choices(player):
    import random
    choices=[[1, 'LL'], [2, 'LH'], [3, 'HL'], [4, 'HH']]
    random.shuffle(choices)
    return choices

#2 by BonnEconLab (edited )

The simplest solution is to include the following:


class Player(BasePlayer):

    selfprofile_order = models.StringField(initial="")


def selfprofile_choices(player):
    import random
    choices = [[1, 'LL'], [2, 'LH'], [3, 'HL'], [4, 'HH']]
    random.shuffle(choices)
    player.selfprofile_order = str(choices)
    return choices


If you would prefer something that will be easier to analyze later on, then you could also do


def selfprofile_choices(player):
    import random
    choices = [[1, 'LL'], [2, 'LH'], [3, 'HL'], [4, 'HH']]
    random.shuffle(choices)
    choices_order = [c[0] for c in choices]  # Record order of the IDs
    player.selfprofile_order = str(choices_order)
    return choices


or


def selfprofile_choices(player):
    import random
    choices = [[1, 'LL'], [2, 'LH'], [3, 'HL'], [4, 'HH']]
    random.shuffle(choices)
    choices_order = [c[1] for c in choices]  # Record order of the strings
    player.selfprofile_order = str(choices_order)
    return choices

Write a reply

Set forum username