Files
hamster-tycoon/randomizer/rand.go
2019-09-20 01:24:50 +02:00

36 lines
606 B
Go

package randomizer
import "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(_ int) int {
return func(_ int)int { return n}
}
var randGen = NewRandomizer(realRand).Int
func FakeRandomizer(n int) {
randGen = NewRandomizer(fakeRand(n)).Int
}