73 lines
978 B
Go
73 lines
978 B
Go
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
|
|
}
|