from otree.api import Currency as c, currency_range, expect, Bot from . import * import random, math class PlayerBot(Bot): def play_round(self): if self.player.subsession.period == 1: yield P01_intro inputs = get_inputs(self.player.player_income) yield P02_main, dict(input01 = inputs[0], input02 = inputs[1], input03 = inputs[2], input04 = inputs[3], input05 = inputs[4], input06 = inputs[5], input07 = inputs[6]) yield P03_feedback if self.player.round_number == C.NUM_ROUNDS: yield P04_payoffs def get_inputs(income): rnd_income_used = max(random.random(), random.random(), random.random()) rnd_input1 = random.random() rnd_input2 = random.random() rnd_input3 = random.random() rnd_input4 = random.random() rnd_input5 = random.random() rnd_input6 = random.random() rnd_input7 = random.random() sum_rnd_inputs = rnd_input1 + rnd_input2 + rnd_input3 + rnd_input4 + rnd_input5 + rnd_input6 + rnd_input7 income_used = rnd_income_used * income input1 = math.floor( ( 1 / C.PURCHASE_PRICE_BOND[0] ) * rnd_input1 * income_used * ( 1 / sum_rnd_inputs ) ) input2 = math.floor( ( 1 / C.PURCHASE_PRICE_BOND[1] ) * rnd_input2 * income_used * ( 1 / sum_rnd_inputs ) ) input3 = math.floor( ( 1 / C.PURCHASE_PRICE_BOND[2] ) * rnd_input3 * income_used * ( 1 / sum_rnd_inputs ) ) input4 = math.floor( ( 1 / C.PURCHASE_PRICE_BOND[3] ) * rnd_input4 * income_used * ( 1 / sum_rnd_inputs ) ) input5 = math.floor( ( 1 / C.PURCHASE_PRICE_BOND[4] ) * rnd_input5 * income_used * ( 1 / sum_rnd_inputs ) ) input6 = math.floor( ( 1 / C.PURCHASE_PRICE_BOND[5] ) * rnd_input6 * income_used * ( 1 / sum_rnd_inputs ) ) input7 = math.floor( ( 1 / C.PURCHASE_PRICE_BOND[6] ) * rnd_input7 * income_used * ( 1 / sum_rnd_inputs ) ) return([input1, input2, input3, input4, input5, input6, input7])