简化api数量
This commit is contained in:
parent
42b4d56214
commit
a30b918377
@ -11,45 +11,55 @@ func init() {
|
|||||||
rd = rand.New(rand.NewSource(time.Now().UnixNano()))
|
rd = rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func Int() int {
|
// 随机值
|
||||||
return rd.Int()
|
func Rand[T int | int32 | int64 | uint32 | uint64 | float32 | float64]() T {
|
||||||
|
switch any(T(0)).(type) {
|
||||||
|
case int:
|
||||||
|
return T(rd.Int())
|
||||||
|
case int32:
|
||||||
|
return T(rd.Int31())
|
||||||
|
case int64:
|
||||||
|
return T(rd.Int63())
|
||||||
|
case uint32:
|
||||||
|
return T(rd.Uint32())
|
||||||
|
case uint64:
|
||||||
|
return T(rd.Uint64())
|
||||||
|
case float32:
|
||||||
|
return T(rd.Float32())
|
||||||
|
case float64:
|
||||||
|
return T(rd.Float64())
|
||||||
|
default:
|
||||||
|
panic("不支持的类型")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// [0,n)
|
// 从[0,n)范围里随机值
|
||||||
func IntN(n int) int {
|
func RandN[T int | int32 | int64 | uint32 | uint64](n T) T {
|
||||||
return rd.Intn(n)
|
if int64(n) < 1 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
switch any(n).(type) {
|
||||||
|
case int:
|
||||||
|
return T(rd.Intn(int(n))) // [0,n) 的随机整数
|
||||||
|
case int32:
|
||||||
|
return T(rd.Int31n(int32(n)))
|
||||||
|
case int64:
|
||||||
|
return T(rd.Int63n(int64(n)))
|
||||||
|
case uint32:
|
||||||
|
return T(rd.Uint32() % uint32(n)) // 注意:这里有小偏差
|
||||||
|
case uint64:
|
||||||
|
return T(rand.Uint64() % uint64(n))
|
||||||
|
default:
|
||||||
|
panic("不支持的类型")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Int31() int32 {
|
// 从[0,n)范围里随机值
|
||||||
return rd.Int31()
|
func RandRange[T int | int32 | int64 | uint32 | uint64](min, max T) T {
|
||||||
}
|
if int64(max) < 1 || int64(min) < 1 || max < min {
|
||||||
|
return 0
|
||||||
func Int31n(n int32) int32 {
|
}
|
||||||
return rd.Int31n(n)
|
return RandN[T](max-min) + min
|
||||||
}
|
|
||||||
|
|
||||||
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 {
|
func Perm(n int) []int {
|
||||||
@ -66,11 +76,6 @@ func Shuffle[T any](slice []T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// RandomInt64 随机生成一个[min, max]之间的整数
|
|
||||||
func RandomInt64(min, max int64) int64 {
|
|
||||||
return Int63n(max-min) + min
|
|
||||||
}
|
|
||||||
|
|
||||||
const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||||
|
|
||||||
func RandomString(n int) string {
|
func RandomString(n int) string {
|
||||||
|
@ -10,17 +10,11 @@ func TestShuffle(t *testing.T) {
|
|||||||
|
|
||||||
func TestClean(t *testing.T) {
|
func TestClean(t *testing.T) {
|
||||||
_ = t
|
_ = t
|
||||||
_ = Int
|
_ = Rand[int]
|
||||||
_ = Int31
|
_ = RandN[int]
|
||||||
_ = Int31n
|
_ = RandRange[int]
|
||||||
_ = Int63
|
|
||||||
_ = Int63n
|
|
||||||
_ = Uint32
|
|
||||||
_ = Uint64
|
|
||||||
_ = Float32
|
|
||||||
_ = Float64
|
|
||||||
_ = Perm
|
_ = Perm
|
||||||
_ = Read
|
_ = Read
|
||||||
_ = RandomInt64
|
|
||||||
_ = RandomString
|
_ = RandomString
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user