import random import pandas as pd # Generate parameters randomly # each round is: [part1_pool, part1_good_sep, part1_bad_sep, part2_good, part2_bad, outside] Parameters_sep = [] #[part1_pool, part1_good_sep, part1_bad_sep, part2_good, part2_bad, outside] Payoffs_sep = [] #[sep_opt, pool_out, pool_hire] Parameters_pool = [] #[part1_pool, part1_good_sep, part1_bad_sep, part2_good, part2_bad, outside] Payoffs_pool = [] #[sep_opt, pool_out, pool_hire] Parameters_sep_det = [] #[part1_pool, part1_good_sep, part1_bad_sep, part2_good, part2_bad, outside] Payoffs_sep_det = [] #[sep_opt, pool_out, pool_hire] Parameters_pool_det = [] #[part1_pool, part1_good_sep, part1_bad_sep, part2_good, part2_bad, outside] Payoffs_pool_det = [] #[sep_opt, pool_out, pool_hire] Dominance_sep = [] Dominance_pool = [] Dominance_sep_det = [] Dominance_pool_det = [] counter = 0 while (len(Parameters_sep)<=4 or len(Parameters_pool)<=4 or len(Parameters_sep_det)<=4 or len(Parameters_pool_det)<=4) and counter<=50000: part1_pool = random.randrange(5, 55, 5) part1_good_sep = random.randrange(5, part1_pool+5, 5) part1_bad_sep = random.randrange(0, part1_good_sep, 5) outside = random.randrange(220, 225, 5) part2_bad = random.randrange(5, outside, 5) part2_good = random.randrange(part2_bad, 450+5, 5) pool_out = part1_pool + outside pool_hire = part1_pool + 0.5*(part2_good+part2_bad) sep_opt = 0.5*(part1_good_sep+part1_bad_sep)+0.5*(part2_good+outside) pool_out_det = part1_pool*2 + outside pool_hire_det = part1_pool*2 + 0.5 * (part2_good + part2_bad) sep_opt_det = (part1_good_sep+part1_bad_sep)+0.5*(part2_good+outside) if len(Parameters_sep)<=4 and sep_opt - pool_hire >= 100 and sep_opt - pool_out >= 100 and sep_opt_det - pool_hire_det >= 100 and sep_opt_det - pool_out_det >= 100: p = [x/100 for x in[part1_pool, part1_good_sep, part1_bad_sep, part2_good, part2_bad, outside]] Parameters_sep += [p] Payoffs_sep += [[x/100 for x in [sep_opt, pool_out, pool_hire]]] Parameters_sep_det += [p] Payoffs_sep_det += [[x / 100 for x in [sep_opt_det, pool_out_det, pool_hire_det]]] Dominance_sep_det += [sep_opt_det >= pool_out_det] Dominance_sep += [part1_good_sep+part2_good>=part1_pool+part2_good and part1_bad_sep+outside>=part1_pool+part2_bad] if len(Parameters_pool)<=4 and (sep_opt - pool_hire <= -100 or sep_opt - pool_out <= -100) and (sep_opt_det - pool_hire_det <= -100 or sep_opt_det - pool_out_det <= -100): p = [x / 100 for x in [part1_pool, part1_good_sep, part1_bad_sep, part2_good, part2_bad, outside]] Parameters_pool += [p] Payoffs_pool += [[x / 100 for x in [sep_opt, pool_out, pool_hire]]] Dominance_pool += [pool_out>=part1_good_sep+part2_good] Parameters_pool_det += [p] Payoffs_pool_det += [[x / 100 for x in [sep_opt_det, pool_out_det, pool_hire_det]]] Dominance_pool_det += [pool_out_det >= part1_good_sep + part2_good] # if len(Parameters_sep_det) <= 4 and sep_opt_det - pool_hire_det >= 100 and sep_opt_det - pool_out_det >= 100: # p = [x / 100 for x in [part1_pool, part1_good_sep, part1_bad_sep, part2_good, part2_bad, outside]] # Parameters_sep_det += [p] # Payoffs_sep_det += [[x / 100 for x in [sep_opt_det, pool_out_det, pool_hire_det]]] # Dominance_sep_det += [sep_opt_det>=pool_out_det] # if len(Parameters_pool_det) <= 4 and (sep_opt_det - pool_hire_det <= -100 or sep_opt_det - pool_out_det <= -100): # p = [x / 100 for x in [part1_pool, part1_good_sep, part1_bad_sep, part2_good, part2_bad, outside]] # Parameters_pool_det += [p] # Payoffs_pool_det += [[x / 100 for x in [sep_opt_det, pool_out_det, pool_hire_det]]] # Dominance_pool_det += [pool_out_det >= part1_good_sep + part2_good] counter += 1 # # Parameters_pool = [[]] #[part1_pool, part1_good_sep, part1_bad_sep, part2_good, part2_bad, outside] # Payoffs_pool = [[]] #[sep_opt, pool_out, pool_hire] # counter = 0 # # while len(Parameters_pool)<=5 and counter<=10000: # part1_pool = random.randrange(5, 55, 5) # part1_good_sep = random.randrange(5, part1_pool+5, 5) # part1_bad_sep = random.randrange(0, part1_good_sep, 5) # outside = random.randrange(200, 250, 5) # part2_bad = random.randrange(5, outside, 5) # part2_good = random.randrange(part2_bad, 450+5, 5) # pool_out = part1_pool + outside # pool_hire = part1_pool + 0.5*(part2_good+part2_bad) # sep_opt = 0.5*(part1_good_sep+part1_bad_sep)+0.5*(part2_good+outside) # if sep_opt - pool_hire <= -100 or sep_opt - pool_out <= -100: # p = [x/100 for x in[part1_pool, part1_good_sep, part1_bad_sep, part2_good, part2_bad, outside]] # Parameters_pool += [p] # Payoffs_pool += [[x/100 for x in [sep_opt, pool_out, pool_hire]]] # counter += 1 # This is for copy-pasting into the app code for i in range(5): print('r'+str(i+1)+' = ' + str(Parameters_sep[i][:-1])) for i in range(5): print('r'+str(i+6)+' = ' + str(Parameters_pool[i][:-1])) # Create a dictionary with the data data = {'treat': ['Unc']*10+['Det']*10, 'optimum': ['Sep']*5+['Pool']*5+['Sep']*5+['Pool']*5, 'part1_pool': [x[0] for x in Parameters_sep+Parameters_pool+Parameters_sep_det+Parameters_pool_det], 'part1_good_sep': [x[1] for x in Parameters_sep+Parameters_pool+Parameters_sep_det+Parameters_pool_det], 'part1_bad_sep': [x[2] for x in Parameters_sep+Parameters_pool+Parameters_sep_det+Parameters_pool_det], 'part2_good': [x[3] for x in Parameters_sep+Parameters_pool+Parameters_sep_det+Parameters_pool_det], 'part2_bad': [x[4] for x in Parameters_sep+Parameters_pool+Parameters_sep_det+Parameters_pool_det], 'outside': [x[5] for x in Parameters_sep+Parameters_pool+Parameters_sep_det+Parameters_pool_det], 'sep_exp_payoff': [x[0] for x in Payoffs_sep+Payoffs_pool+Payoffs_sep_det+Payoffs_pool_det], 'pool_out_payoff': [x[1] for x in Payoffs_sep+Payoffs_pool+Payoffs_sep_det+Payoffs_pool_det], 'pool_hire_exp_payoff': [x[2] for x in Payoffs_sep+Payoffs_pool+Payoffs_sep_det+Payoffs_pool_det], 'dominance': Dominance_sep+Dominance_pool+Dominance_sep_det+Dominance_pool_det} # Create a DataFrame from the dictionary df = pd.DataFrame(data) # Display the DataFrame print(df) saved_params = df