This commit is contained in:
Jeffrey Duroyon
2019-04-04 14:29:48 +02:00
committed by Jeffrey Duroyon
parent 0df6d64c35
commit 33db360b03
38 changed files with 1476 additions and 1 deletions

View File

@@ -0,0 +1,45 @@
package randomizer
import (
"fmt"
"math/rand"
)
type Random interface {
Int() int
}
func init() {}
type rndGenerator func(n int) int
type Randomizer struct {
fn rndGenerator
}
func NewRandomizer(fn rndGenerator) *Randomizer {
return &Randomizer{fn: fn}
}
func (r *Randomizer) Int(n int) int {
return r.fn(n)
}
func Rand(rand int) int {
return randGen(rand)
}
func realRand(n int) int { return int(rand.Intn(n)) }
func fakeRand(n int) func(numb int) int {
return func(numb int) int {
if n >= numb {
panic(fmt.Sprintf("%d Should not be superior of %d", n, numb))
}
return n
}
}
var randGen = NewRandomizer(realRand).Int
func FakeRandomizer(n int) {
randGen = NewRandomizer(fakeRand(n)).Int
}