|
|
|
@ -1,7 +1,7 @@
|
|
|
|
|
package gorandom
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"math/rand"
|
|
|
|
|
"math/rand/v2"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
@ -15,7 +15,11 @@ func random[T int | int64](n T, chars string) string {
|
|
|
|
|
if n <= 0 {
|
|
|
|
|
return ""
|
|
|
|
|
}
|
|
|
|
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
|
|
|
|
|
|
|
|
|
// 随机数生成器,加入时间戳保证每次生成的随机数不一样
|
|
|
|
|
seed := time.Now().UnixNano() // rand内部运算的随机数
|
|
|
|
|
r := rand.New(rand.NewPCG(uint64(seed), uint64(seed))) // rand计算得到的随机数
|
|
|
|
|
|
|
|
|
|
bytes := make([]byte, n, n)
|
|
|
|
|
l := len(chars)
|
|
|
|
|
var i T = 0
|
|
|
|
@ -23,7 +27,7 @@ func random[T int | int64](n T, chars string) string {
|
|
|
|
|
if i >= n {
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
bytes[i] = chars[r.Intn(l)]
|
|
|
|
|
bytes[i] = chars[r.IntN(l)]
|
|
|
|
|
i++
|
|
|
|
|
}
|
|
|
|
|
return string(bytes)
|
|
|
|
@ -54,7 +58,7 @@ func Range(min int64, max int64) int64 {
|
|
|
|
|
var number int64
|
|
|
|
|
for {
|
|
|
|
|
// 生成在范围 [min, max) 内的随机数
|
|
|
|
|
number = int64(rand.Intn(int(max)-int(min)) + int(min))
|
|
|
|
|
number = int64(rand.IntN(int(max)-int(min)) + int(min))
|
|
|
|
|
|
|
|
|
|
// 检查随机数是否大于 min 且小于 max
|
|
|
|
|
if number > min && number < max {
|
|
|
|
|