def crossover(parent1, parent2): child = Unit() child.x = random.random() * (parent1.x - parent2.x) + parent2.x child.y = random.random() * (parent1.y - parent2.y) + parent2.y child.intensity = random.random() * (parent1.intensity - parent2.intensity) + parent2.intensity o1 = min(parent1.offset, parent2.offset) o2 = max(parent1.offset, parent2.offset) child.offset = random.choice(range(o1, o2 + 1)) r1 = min(parent1.repetitions, parent2.repetitions) r2 = max(parent1.repetitions, parent2.repetitions) child.repetitions = random.choice(range(r1, r2 + 1)) return child