# -*- coding: utf-8 -*-
"""
Created on Mon Dec 5 18:29:27 2022
@author: janmo
"""
import pandas as pd
from random import shuffle
import pickle
import random
Lotterries_A = pd.read_csv("lotteries_classA.csv")
Lotterries_B = pd.read_csv("lotteries_classB.csv")
def create_lottery(p1, v1, v2):
parameter_list = [p1, v1, v2]
expected_value = p1 * v1 + (1 - p1) * v2
if (v1 != 1) and (v2 != 1):
lottery = f"Mit einer Wahrscheinlichkeit von {p1 * 100}% erhalten Sie {v1} Punkte.
Mit einer Wahrscheinlichkeit von {(1 - p1) * 100}% erhalten Sie {v2} Punkte."
elif (v1 == 1) and (v2 != 1):
lottery = f"Mit einer Wahrscheinlichkeit von {p1 * 100}% erhalten Sie {v1} Punkt.
Mit einer Wahrscheinlichkeit von {(1 - p1) * 100}% erhalten Sie {v2} Punkte."
elif (v1 != 1) and (v2 == 1):
lottery = f"Mit einer Wahrscheinlichkeit von {p1 * 100}% erhalten Sie {v1} Punkte.
Mit einer Wahrscheinlichkeit von {(1 - p1) * 100}% erhalten Sie {v2} Punkt."
return lottery
lottery_A_list = []
for i in range(len(Lotterries_A)):
p = Lotterries_A.iloc[i, 1]
value1 = int(Lotterries_A.iloc[i, 2])
value2 = int(Lotterries_A.iloc[i, 3])
exp_value = Lotterries_A.iloc[i, 4]
var = Lotterries_A.iloc[i, 5]
representative = Lotterries_A.iloc[i, 6]
lottery_A_dict = dict(ID=i,
prob = p,
value1 = value1,
value2 = value2,
text = create_lottery(p, value1, value2),
exp_value = exp_value,
var = var,
representative = representative,
risk_level = None,
dominance_class = "A",
roman_index = None
)
lottery_A_list.append(lottery_A_dict)
lottery_A_list[0]['risk_level'] = 0
lottery_A_list[0]['roman_index'] = "I"
lottery_A_list[2]['risk_level'] = 1
lottery_A_list[2]['roman_index'] = "II"
lottery_A_list[4]['risk_level'] = 2
lottery_A_list[4]['roman_index'] = "III"
lottery_A_list[6]['risk_level'] = 3
lottery_A_list[6]['roman_index'] = "IV"
lottery_A_list[9]['risk_level'] = 4
lottery_A_list[9]['roman_index'] = "V"
lottery_A_list[11]['risk_level'] = 5
lottery_A_list[11]['roman_index'] = "VI"
lottery_A_list[15]['risk_level'] = 6
lottery_A_list[15]['roman_index'] = "VII"
lottery_A_list[18]['risk_level'] = 7
lottery_A_list[18]['roman_index'] = "VIII"
lottery_A_list[22]['risk_level'] = 8
lottery_A_list[22]['roman_index'] = "IX"
lottery_A_list[25]['risk_level'] = 9
lottery_A_list[25]['roman_index'] = "X"
lottery_A_list[27]['risk_level'] = 10
lottery_A_list[27]['roman_index'] = "XI"
# ...
lottery_B_list = []
for i in range(len(Lotterries_B)):
p = Lotterries_B.iloc[i, 1]
value1 = int(Lotterries_B.iloc[i, 2])
value2 = int(Lotterries_B.iloc[i, 3])
exp_value = Lotterries_B.iloc[i, 4]
var = Lotterries_B.iloc[i, 5]
lottery_B_dict = dict(ID=i,
prob = p,
value1 = value1,
value2 = value2,
text = create_lottery(p, value1, value2),
exp_value = exp_value,
var = var,
dominance_class = "B",
risk_level = None,
representative=None,
roman_index = None
)
lottery_B_list.append(lottery_B_dict)
lottery_AB_list = (lottery_A_list + lottery_B_list).copy()
shuffle(lottery_AB_list)
for i in range(len(lottery_AB_list)):
lottery_AB_list[i]['ID_shuffled'] = i
# Save the lotteries
filenameA = 'C:/Users/janmo/OneDrive/Dokumente/Goethe Uni/Doktor/Projekte/Decentralized Feature Selection 1/Otree/lotteries_risk_game/lotteries_A.sav'
filenameB = 'C:/Users/janmo/OneDrive/Dokumente/Goethe Uni/Doktor/Projekte/Decentralized Feature Selection 1/Otree/lotteries_risk_game/lotteries_B.sav'
filenameAB = 'C:/Users/janmo/OneDrive/Dokumente/Goethe Uni/Doktor/Projekte/Decentralized Feature Selection 1/Otree/lotteries_risk_game/lotteries_AB.sav'
pickle.dump(lottery_A_list, open(filenameA, 'wb'))
pickle.dump(lottery_B_list, open(filenameB, 'wb'))
pickle.dump(lottery_AB_list, open(filenameAB, 'wb'))
### Lottery Personalization
personalised_lotteries = []
for lottery in lottery_A_list:
if lottery['risk_level'] == 7:
ID_found = lottery['ID']
if ID_found == 0:
ID_presented = [0,1,2,3,4]
elif ID_found == 1:
ID_presented = [0,1,2,3,4]
else:
ID_presented = [ID_found-2,
ID_found-1,
ID_found,
ID_found+1,
ID_found+2]
for lottery in lottery_A_list:
if lottery['ID'] in ID_presented:
personalised_lotteries.append(lottery)
lottery_A_list[10]
random.choices([lottery_A_list[10]['value1'], lottery_A_list[10]['value2']],
weights = (lottery_A_list[10]['prob'], 1-lottery_A_list[10]['prob']))[0]
random.random()