def pick_ref.rng.go

unified-nsga-iii@0.2.2.0 · survival.bend:513

import unified-nsga-iii@0.2.2.0/survival.bend as Survival
import Base
import unified-nsga-iii@0.2.2.0/rng.bend as Rng
import unified-nsga-iii@0.2.2.0/util.bend as Util

513# Affine API: advanced State; chosen index is `Rng.last_nat` (no pair match).
514# C# Select(..., rng): draw only when more than one min-count ref.
515def pick_ref.rng.go(+mins: List<&2, Nat>, n: Nat, +fallback: Nat, rng: Rng.State) -> Rng.State:
516  match n:
517    case 0n:
518      Rng.with_k(rng, fallback)
519    case 1n:
520      Rng.with_k(rng, min_idx_ne(mins))
521    case 1n+p:
522      +rng2 = Rng.next_nat(rng, 1n+p)
523      Rng.with_k(rng2, Util.get_nat(mins, Rng.last_nat(rng2)))

Uses (8)

Used by (1)