import { floor, random } from '../../../../alias'; import { Sequence } from '../../core'; import { compose } from '../../../../helper/compose'; compose(Sequence, class extends Sequence { public static override random(): Sequence>]> public static override random(gen: () => a): Sequence>]> public static override random(as: a[]): Sequence> public static override random(p: (() => number) | (() => a) | a[] = () => random()): Sequence>]> | Sequence> { return typeof p === 'function' ? Sequence.from(new Sequence((_, cons) => cons(p(), _))) : this.random().map(r => p[floor(r * p.length)]); } });