vRp.CD2g_test/utils/random/number.go

78 lines
1.6 KiB
Go

package random
import (
"math/rand"
"time"
)
// Int64 返回一个介于min和max之间的int64类型的随机数。
func Int64(min int64, max int64) int64 {
if min == max {
return min
}
return min + rand.Int63n(max+1-min)
}
// Int32 返回一个介于min和max之间的的int32类型的随机数。
func Int32(min int32, max int32) int32 {
if min == max {
return min
}
return int32(Int64(int64(min), int64(max)))
}
// Float32Range 返回一个介于min和max之间的的float32类型的随机数。
func Float32Range(min float32, max float32) float32 {
if min == max {
return min
}
return min + rand.Float32()*(max-min)
}
// Float64Range 返回一个介于min和max之间的的float64类型的随机数。
func Float64Range(min float64, max float64) float64 {
if min == max {
return min
}
return min + rand.Float64()*(max-min)
}
// Int 返回一个介于min和max之间的的int类型的随机数。
func Int(min int, max int) int {
if min == max {
return min
}
return int(Int64(int64(min), int64(max)))
}
// Duration 返回一个介于min和max之间的的Duration类型的随机数。
func Duration(min int64, max int64) time.Duration {
if min == max {
return time.Duration(min)
}
return time.Duration(Int64(min, max))
}
// Float64 返回一个0~1的浮点数
func Float64() float64 {
return rand.Float64()
}
// Float32 返回一个0~1的浮点数
func Float32() float32 {
return rand.Float32()
}
// IntN 返回一个0~n的整数
func IntN(n int) int {
if n <= 0 {
return 0
}
return rand.Intn(n)
}
// Bool 返回一个随机的布尔值
func Bool() bool {
return rand.Intn(2) == 1
}