def mutate(self, p_mutate):
        """
        Simulate mutation against a probability.
        
        p_mutate:  probability for mutation to occur
        """
        new_dna = []

        for bit in self.dna:
            if random.random() < p_mutate:
                new_bit = bit

                while new_bit == bit:
                    new_bit = random.choice(self.GENETIC_MATERIAL_OPTIONS)
                bit = new_bit

            new_dna.append(bit)

        self.dna = ''.join(new_dna)
Simulate mutation against a probability.
        
        p_mutate:  probability for mutation to occur