RangeExtras: O(1) set operations and random sampling for ranges
RangeExtras gives you fast set operations and random sampling:
iex> RangeExtras.union(1..4, 3..5)
[1..5]
iex> RangeExtras.difference(8..1, 4..4)
[8..5, 3..1]
iex> RangeExtras.intersection(8..1, -4..0)
[]
iex> RangeExtras.random(1..1_000_000)
166577
RangeExtras.random/1
benchmarked against Enum.random/1
:
RangeExtras.random(1..1000) 0.89 µs/op
Enum.random(1..1000) 375.37 µs/op
RangeExtras.random(1..1_000_000) 0.90 µs/op
Enum.random(1..1_000_000) 385288.60 µs/op
I hope you find this useful! Grab it from Hex.
Read next Released Mandrake v0.0.4: https://hex.pm/packages/mandrake