diff --git a/src/model/model.class.ts b/src/model/model.class.ts index 0755b10..5b4883f 100644 --- a/src/model/model.class.ts +++ b/src/model/model.class.ts @@ -283,11 +283,14 @@ export class Model { return this.mutatePermutation(); } - const partner = min + 1 == max ? min : Paul.chooseBetween(max, min, BIAS.REVERSE_BELL); - if (chosen == partner) { - // would that ever happen ? - return this.mutatePermutation(); + let partner = min + 1 == max ? min : Paul.chooseBetween(max, min, BIAS.REVERSE_BELL); + while (chosen == partner) { + // if chosen is same as partner + // randomize until it isn't + // this will work on condition: there are more than two choices in range. + partner = Paul.chooseBetween(max, min, BIAS.REVERSE_BELL); } + const [a] = Model._order.splice(chosen, 1); const b = Model._order[partner];