import random
import numpy as np
def iterate(num_exams, A, B):
A_wins = []
B_wins = []
for exam in range(0,num_exams):
rand_questions = [random.randint(0,99) for i in range(0,25)]
A = [PA[q] for q in rand_questions]
B = [PB[q] for q in rand_questions]
A_question_wins = 0
B_question_wins = 0
Draw = 0
for idx, p in enumerate(A):
prob_A_win = p * (1-B[idx])
prob_B_win = (1-p) * B[idx]
prob_both_win = (p*B[idx])
prob_both_lose = ((1-p)*(1-B[idx]))
prob_draw = prob_both_lose + prob_both_win
#all_prob = prob_A_win + prob_B_win + prob_both_win + prob_both_lose
r = random.uniform(0, 1)
#print(prob_draw)
#print("A" + str(prob_A_win))
#print("B" + str(prob_B_win))
if(r < prob_draw):
Draw += 1
elif(r <= (prob_draw + prob_A_win)):
A_question_wins += 1
else:
B_question_wins += 1
if(A_question_wins > B_question_wins):
A_wins.append(1)
B_wins.append(0)
else:
A_wins.append(0)
B_wins.append(1)
A_tot = (np.sum(A_wins))
B_tot = (np.sum(B_wins))
A_win_prob = A_tot / (A_tot+B_tot)
B_win_prob = B_tot / (A_tot+B_tot)
return A_win_prob
import plotly
from plotly.graph_objs import Line, Layout
import plotly.graph_objs as go
import numpy as np
N = 1000
x = np.linspace(0, N, 100)
PA = [random.uniform(0, 1) for i in range(0,100)]
PB = [random.uniform(0, 1) for i in range(0,100)]
prob_A_win = [iterate(i,PA,PB) for i in range(0,N)]
PA = [random.uniform(0, 1) for i in range(0,100)]
PB = [random.uniform(0, 1) for i in range(0,100)]
prob_A_win2 = [iterate(i,PA,PB) for i in range(0,N)]
PA = [random.uniform(0, 1) for i in range(0,100)]
PB = [random.uniform(0, 1) for i in range(0,100)]
prob_A_win3 = [iterate(i,PA,PB) for i in range(0,N)]
trace0 = go.Scatter(
x = x,
y = prob_A_win,
mode = 'lines',
name = 'lines'
)
trace1 = go.Scatter(
x = x,
y = prob_A_win2,
mode = 'lines',
name = 'lines'
)
trace2 = go.Scatter(
x = x,
y = prob_A_win3,
mode = 'lines',
name = 'lines'
)
plotly.offline.init_notebook_mode(connected=True)
data = [trace0, trace1, trace2]
plotly.offline.iplot(data, filename='line-mode')
/home/kevin/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:45: RuntimeWarning: invalid value encountered in double_scalars /home/kevin/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:47: RuntimeWarning: invalid value encountered in double_scalars