(define (mutate genotype)
(let (
(m 0.5)
(d 0.5)
(G genotype)
(Gp ())
)
(begin
(while (not (null? G))
(begin
(if (< (rand) m)
(let ((gip (+ (car G) (randR (- 0 d) d))))
(set! gip (clamp gip 0 1))
(set! Gp (append Gp (list gip))))
; else
(set! Gp (append Gp (list (car G)))))
(set! G (cdr G))
))
(if (equal? Gp genotype)
(mutate genotype)
Gp)
)))