+ Chunk *RandomChunk(GaloisLFSR &rand) {
+ return rand.From(chunks);
+ }
+ BlockLookup RandomBlock(GaloisLFSR &rand) {
+ return BlockLookup(RandomChunk(rand), Chunk::ToPos(rand.Next<unsigned int>() % Chunk::size));
+ }
+
+ int Extent() const noexcept { return extent; }
+
+ ExactLocation::Coarse CoordsBegin() const noexcept { return base - ExactLocation::Coarse(extent); }
+ ExactLocation::Coarse CoordsEnd() const noexcept { return base + ExactLocation::Coarse(extent + 1); }
+