import numpy as np

class AgentK:
    
    def __init__(self, g, l, demandDist):
        self.m = np.mean([demandDist() for k in range(1000)])

    def receiveReward(self, reward):
        pass
    
    def decisionRule(self):
        return self.m
        
class AgentU:
    
    def __init__(self, g, l):
        self.g = g
        self.l = l 
        self.n = 0 # number of days observed
        self.s = 0 # sum of the demands so far
        self.lastProd = 0
        
    def receiveReward(self, reward):
        self.n += 1
        if reward == self.g * self.lastProd:
            self.s += self.lastProd + 1
        else: 
            self.s += (reward + self.l * self.lastProd) / (self.g + self.l)
        
    def decisionRule(self):
        if self.n > 0:
            self.lastProd = self.s / self.n
        else:
            self.lastProd = 10 #default for the first day
        return self.lastProd        
