public void TestUIntRange() { const uint min = 3, max = 6; var range = new URange(min, max); test(rng => rng.nextUIntInRangeT(range), min, max, range.ToImmutableHashSet().some()); }
public uint nextUIntInRange(URange range, out Rng newState) => ulongToUIntInRange(range, nextULong(out newState));
public Tpl <Rng, uint> nextUIntInRangeT(URange range) => nextUIntT.map2(v => ulongToUIntInRange(range, v));
public static Fn <Rng, Tpl <Rng, uint> > nextUIntInRangeS(URange range) => rng => rng.nextUIntInRangeT(range);
static uint ulongToUIntInRange(URange range, ulong v) => range.from + (uint)(v % (range.to - range.from + 1));