def mutate(self, chromo):
        """
        Function takes chromosome inputs and mutates the chromosome based on mutation rate
        :param chromo: input player chromosome
        :return: mutated player chromosome
        """
        for z in xrange(len(chromo)):

            if random_number() < MUTATION_RATE:
                chromo[z] = random_number()
        return chromo
    def crossover(self, offspring1, offspring2):
        """
        perform a crossover on the offspring and return the changed offsprings with new chromosomes
        :param offspring1: first NN player
        :param offspring2: second NN player
        :return: new offsprings generated
        """
        # if random_number() < CROSSOVER_RATE:
        #     crossover_val = int(random_number() * len(offspring1))
        #     t1 = offspring1[:crossover_val] + offspring2[crossover_val:]
        #     t2 = offspring2[:crossover_val] + offspring1[crossover_val:]

        # Changing the way we do crossovers
        for c_ix in range(len(offspring1)):
            if random_number() < CROSSOVER_RATE:
                offspring1[c_ix], offspring2[c_ix] = offspring2[c_ix], offspring1[c_ix]

        #     return t1, t2
        return offspring1, offspring2