#1 by Xinghao_Yao
Hi, I want to generate random 'signals' and 'first_signals' for each round. But my code generate the same value of them for all round. Should I just 'creating_session' or not? Here is my code: class C(BaseConstants): NAME_IN_URL = 'Selected' PLAYERS_PER_GROUP = None NUM_ROUNDS = 8 signal_list = [50, 70, 90, 110, 130, 150] def creating_session(subsession: Subsession): session = subsession.session signals = random.choices(population=C.signal_list, k=6) session.vars['signals'] = signals first_signal = random.choice(session.vars['signals']) session.vars['first_signal'] = first_signal Thanks a lot!
#2 by Daniel_Frey
Hi there, Happy New Year! I think I see your problem: creating_session is executed for each round, but you overwrite session.vars['signals'] and session.vars['first_signal'] each round, so only the values that were chosen in the last round will be stored in session.vars['signals'] / session.vars['first_signal']. You need a dictionary, where you can store the list & the first signal for each round. By the way, constants in 'class C(BaseConstants)' should be all upper-case. Try this code (I haven't tested it, but it should work): class C(BaseConstants): NAME_IN_URL = 'Selected' PLAYERS_PER_GROUP = None NUM_ROUNDS = 8 SIGNAL_LIST= [50, 70, 90, 110, 130, 150] def creating_session(subsession: Subsession): session = subsession.session round_nr = subsession.round_nr # The dicts must be created so that they can get filled with values each round, but only in round 1, otherwise they # would get overwritten if round_nr == 1: session.vars['signals_per_round'] = dict() session.vars['first_signal_per_round'] = dict() signals = random.choices(population=C.SIGNAL_LIST, k=6) session.vars['signals_per_round'][round_nr] = signals first_signal = random.choice(signals) session.vars['first_signal'][round_nr] = first_signal # Check if the lists are saved correctly print('signals_list:', session.vars['signals_list'], 'first_signal:', session.vars['first_signal_per_round'] I hope that helps! Best, Daniel
#3 by Xinghao_Yao
Hi Daniel, Thanks for your reply. It works! As a beginner of oTree, your comments are super helpful. Best, Xinghao