Q1.

Q2.

set.seed(1)

Reg_mL = function(index, E, Tmax, pA, pB) {
  sommeA = 0
  sommeB = 0
  regret = c()
  
  t = 1
  while (t <= E*Tmax/2) {
    r = runif(1)
    if (r < pA) {
      sommeA = sommeA + 1
    }
    regret[2*t - 1] = pA - (sommeA + sommeB)/(2*t - 1)
    
    r = runif(1)
    if (r < pB) {
      sommeB = sommeB + 1
    }
    regret[2*t] = pA - (sommeA + sommeB)/(2*t)
    
    t = t + 1
  }
  
  if (sommeA >= sommeB) {
    p_opt = pA
    p_nopt = pB
  } else {
    p_opt = pB
    p_nopt = pA
  }
  sommeAB = sommeA + sommeB
  
  t = E*Tmax + 1
  while (t <= Tmax) {
    r = runif(1)
    if (r < p_opt) {
      sommeAB = sommeAB + 1
    }
    regret[t] = pA - sommeAB/t
    
    t = t + 1
  }
  
  return(data.frame(Id = index, t = (1:Tmax), RmL = regret))
}

library("ggplot2")
Regret = data.frame()

Tmax = 1000
i = 1
while (i <= 100) {
  index = rep.int(i, Tmax)
  f = Reg_mL(index, 0.05, Tmax, 0.65, 0.55)
  Regret = rbind(Regret, f)
  
  i = i + 1
}
ggplot(Regret, aes(x = t, y = RmL, group = Id)) + geom_line(alpha = 0.1)

Q3.

set.seed(666)

jeu_machine = function(p, somme, t) {
  r = runif(1)
  if (r < p) {
    somme = somme + 1
  }
  t = t + 1
  return(list(somme, t))
}

Reg_mG = function(index, Ec, Tmax, pA, pB) {
  sommeA = 0
  tA = 0
  sommeB = 0
  tB = 0
  regret = c()
  
  t = 1
  while (t <= Tmax) {
    ratioA = sommeA/(tA + 1)
    ratioB = sommeB/(tB + 1)
    
    r = runif(1)
    if (ratioA > ratioB) {
      if (r < Ec) {
        l = jeu_machine(pB, sommeB, tB)
        sommeB = as.numeric(l[1])
        tB = as.numeric(l[2])
      } else { # r > Ec
        l = jeu_machine(pA, sommeA, tA)
        sommeA = as.numeric(l[1])
        tA = as.numeric(l[2])
      }
    } else if (ratioA == ratioB) {
      if (r < 0.5) {
        l = jeu_machine(pA, sommeA, tA)
        sommeA = as.numeric(l[1])
        tA = as.numeric(l[2])
      } else { # r > 0.5
        l = jeu_machine(pB, sommeB, tB)
        sommeB = as.numeric(l[1])
        tB = as.numeric(l[2])
      }
    } else { # ratioA < ratioB
      if (r < Ec) {
        l = jeu_machine(pA, sommeA, tA)
        sommeA = as.numeric(l[1])
        tA = as.numeric(l[2])
      } else { # r > Ec
        l = jeu_machine(pB, sommeB, tB)
        sommeB = as.numeric(l[1])
        tB = as.numeric(l[2])
      }
    }
    
    regret[tA+tB] = pA - (sommeA + sommeB)/(t)
    t = t + 1
  }
  
  return(data.frame(Id = index, tps = (1:Tmax), RmG = regret))
}

library("ggplot2")
Regret = data.frame()

Tmax = 1000
i = 1
while (i <= 100) {
  index = rep.int(i, Tmax)
  f = Reg_mG(index, 0.1, Tmax, 0.65, 0.55)
  Regret = rbind(Regret, f)
  
  i = i + 1
}

ggplot(Regret, aes(x = tps, y = RmG, group = Id)) + geom_line(alpha = 0.1)

Q4.

set.seed(42)

Reg_mT = function(index, Tmax, pA, pB) {
  essaisA = 0
  victoiresA = 0
  essaisB = 0
  victoiresB = 0
  regret = c()

  t = 1
  while (t <= Tmax) {
    rA = rbeta(1, victoiresA + 1, (essaisA - victoiresA) + 1)
    rB = rbeta(1, victoiresB + 1, (essaisB - victoiresB) + 1)
    r = runif(1)
    if (rA > rB) {
      essaisA = essaisA + 1
      if (r < pA) {
        victoiresA = victoiresA + 1
      }
    } else {
      essaisB = essaisB + 1
      if (r < pB) {
        victoiresB = victoiresB + 1
      }
    }
    
    regret[t] = pA - (victoiresA + victoiresB)/t
    t = t + 1
  }
  return(data.frame(Id = index, tps = (1:Tmax), RmT = regret))
}

library("ggplot2")
Regret = data.frame()

Tmax = 1000
i = 1
while (i <= 100) {
  index = rep.int(i, Tmax)
  f = Reg_mT(index, Tmax, 0.65, 0.55)
  Regret = rbind(Regret, f)
  
  i = i + 1
}

ggplot(Regret, aes(x = tps, y = RmT, group = Id)) + geom_line(alpha = 0.1)