Files
mam-contract/internal/utils/randomizer/rand.go
Jeffrey Duroyon 33db360b03 init
2023-10-18 19:52:34 +02:00

46 lines
719 B
Go

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
}