29 lines
394 B
Go
29 lines
394 B
Go
|
|
package random
|
||
|
|
|
||
|
|
import (
|
||
|
|
"math/rand"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
func init() {
|
||
|
|
seed := time.Now().Nanosecond()
|
||
|
|
Seed(seed)
|
||
|
|
}
|
||
|
|
|
||
|
|
func Seed(seed int) {
|
||
|
|
rand.Seed(int64(seed))
|
||
|
|
}
|
||
|
|
|
||
|
|
func Range(min, max float32) float32 {
|
||
|
|
return min + rand.Float32()*(max-min)
|
||
|
|
}
|
||
|
|
|
||
|
|
func Chance(chance float32) bool {
|
||
|
|
return Range(0, 1) <= chance
|
||
|
|
}
|
||
|
|
|
||
|
|
func Choice[T any](slice []T) T {
|
||
|
|
idx := rand.Intn(len(slice))
|
||
|
|
return slice[idx]
|
||
|
|
}
|