def check_steals(self): # reassign on_base values if self.on_base[0] and (not any([self.on_base[i] for i in [1, 2]])): player_on_first = self.teams[self.away_at_bat].fetch_player_by_id(self.on_base[0]) prob_sb = player_on_first.probs["prob_SB"] prob_cs = player_on_first.probs["prob_CS"] outcome_list = [1.0 - (prob_sb - prob_cs), prob_sb, prob_cs] outcome_list = [o / sum(outcome_list) for o in outcome_list] outcome = misc.random_pick([None, "SB", "CS"], outcome_list) if outcome == "SB": self.on_base[1] = self.on_base[0] self.on_base[0] = False self.teams[self.away_at_bat].add_stat(player_on_first.player_id, "SB") elif outcome == "CS": self.on_base[0] = False self.teams[self.away_at_bat].add_stat(player_on_first.player_id, "CS") self.outs += 1 return None
def draw_ab_result(self): probs_list = self.get_probs_list() at_bat_result = misc.random_pick(params.outcomes, probs_list) return at_bat_result