Runs the initialized Monte Carlo simulation to determine the equivalent
        Point Buy of an ability score rolling method. NOTE- This method must
        be called BEFORE "plot_histogram".

        This method returns self, so you can stack the "plot_histogram" and
        "get_results" methods, like pbe1.roll_mc().plot_histogram()

        :param num_hist: Number of Monte Carlo histories to run. Suggest 10**5

def roll_mc(self, num_hist=10**5):
        """
        Runs the initialized Monte Carlo simulation to determine the equivalent
        Point Buy of an ability score rolling method. NOTE- This method must
        be called BEFORE "plot_histogram".

        This method returns self, so you can stack the "plot_histogram" and
        "get_results" methods, like pbe1.roll_mc().plot_histogram()

        :param num_hist: Number of Monte Carlo histories to run. Suggest 10**5
        """
        # This is hard to read. I wanted to keep the underlying functions
        # static, so this is essentially just a wrapper around _find_best_pbe.
        self.arr_res, self.pbe_res = self._find_best_pbe(num_hist,
            self.num_dice, self.dice_type, self.add_val, self.num_attribute,
            self.keep_dice, self.reroll, self.num_arrays, self.keep_attribute,
            self.pbe_map, self.roll_low_limit, self.roll_high_limit,
            self.pbe_low_limit, self.pbe_high_limit)
        return self