completed algorithm: random mutation, roulette selection