Random sampling utility. Complexity: O(n) References: Jeffrey Scott Vitter, An efficient algorithm for sequential random sampling
import mir.random.engine.xorshift; auto gen = Xorshift(112); auto strides = VitterStrides(20, 3); size_t s; foreach(_; 0..3) { s += strides(gen) + 1; assert(s + strides.tail == 20); }
See Implementation
Random sampling utility. Complexity: O(n) References: Jeffrey Scott Vitter, An efficient algorithm for sequential random sampling