package xrand import ( "math/rand" "time" ) var rd *rand.Rand func init() { rd = rand.New(rand.NewSource(time.Now().UnixNano())) } func Int() int { return rd.Int() } // [0,n) func IntN(n int) int { return rd.Intn(n) } func Int31() int32 { return rd.Int31() } func Int31n(n int32) int32 { return rd.Int31n(n) } func Int63() int64 { return rd.Int63() } func Int63n(n int64) int64 { return rd.Int63n(n) } func Uint32() uint32 { return rd.Uint32() } func Uint64() uint64 { return rd.Uint64() } func Float32() float32 { return rd.Float32() } func Float64() float64 { return rd.Float64() } func Perm(n int) []int { return rd.Perm(n) } func Read(p []byte) (n int, err error) { return rd.Read(p) } func Shuffle[T any](slice []T) { rand.Shuffle(len(slice), func(i, j int) { slice[i], slice[j] = slice[j], slice[i] }) } // RandomInt64 随机生成一个[min, max]之间的整数 func RandomInt64(min, max int64) int64 { return Int63n(max-min) + min }