Is generateRandomBits any different from generateRandomBitsForPerturb? It looks like they could be collapsed into a single method, where mutationRate has a default value of 1. Also, I'm not sure generateRandomBits itself is used any where.