diff --git a/intrange/constant.go b/intrange/constant.go index 77f6555..27a9782 100644 --- a/intrange/constant.go +++ b/intrange/constant.go @@ -1,5 +1,7 @@ package intrange +import "math/rand" + // NewConstant returns a range which will always return the input constant func NewConstant(i int) Range { return Constant(i) @@ -33,3 +35,6 @@ func (c Constant) InRange(i int) bool { func (c Constant) Percentile(float64) int { return int(c) } + +// SetRand is NOP on Constant +func (c Constant) SetRand(*rand.Rand) {} diff --git a/intrange/infinite.go b/intrange/infinite.go index 5769258..248d523 100644 --- a/intrange/infinite.go +++ b/intrange/infinite.go @@ -1,6 +1,9 @@ package intrange -import "math" +import ( + "math" + "math/rand" +) // NewInfinite returns a range which will always return math.MaxInt32 and // is unchangable. @@ -35,3 +38,6 @@ func (inf Infinite) InRange(i int) bool { func (inf Infinite) Percentile(float64) int { return math.MaxInt32 } + +// SetRand is NOP on Infinite +func (inf Infinite) SetRand(*rand.Rand) {} diff --git a/intrange/linear.go b/intrange/linear.go index ae2a10c..5a91810 100644 --- a/intrange/linear.go +++ b/intrange/linear.go @@ -67,3 +67,8 @@ func (lir linear) Percentile(f float64) int { } return lir.Min + int(diff) } + +// SetRand sets the rng for linear randomness calls +func (lir linear) SetRand(rng *rand.Rand) { + lir.rng = rng +} diff --git a/intrange/range.go b/intrange/range.go index 77e22d4..6e1b240 100644 --- a/intrange/range.go +++ b/intrange/range.go @@ -1,6 +1,10 @@ // Package intrange holds distributions that accept and return ints package intrange +import ( + "math/rand" +) + // Range represents the ability // to poll a struct and return an integer, // distributed over some range dependant @@ -11,4 +15,5 @@ type Range interface { InRange(int) bool EnforceRange(int) int Percentile(float64) int + SetRand(*rand.Rand) }