This commit is contained in:
pyihe
2021-06-30 15:41:01 +08:00
parent d99816db48
commit 23438adbe8

View File

@@ -1,8 +1,8 @@
package rands
import (
"github.com/pyihe/go-pkg/bytes"
"math/rand"
"strings"
"time"
)
@@ -13,8 +13,13 @@ const (
letterIdxMax = 63 / letterIdxBits
)
var (
src rand.Source
)
func init() {
rand.Seed(time.Now().UnixNano())
src = rand.NewSource(time.Now().UnixNano())
}
//生成min-max之间的一个随机数
@@ -26,20 +31,18 @@ func Int(min, max int) int {
}
//随机指定长度的字符串
func String(n uint) string {
sb := strings.Builder{}
sb.Grow(int(n))
for i, cache, remain := n-1, rand.Int63(), letterIdxMax; i >= 0; {
func String(n int) string {
var b = make([]byte, n)
for i, cache, remain := n-1, src.Int63(), letterIdxMax; i >= 0; {
if remain == 0 {
cache, remain = rand.Int63(), letterIdxMax
cache, remain = src.Int63(), letterIdxMax
}
if idx := int(cache & letterIdxMask); idx < len(letterBytes) {
sb.WriteByte(letterBytes[idx])
b[i] = letterBytes[idx]
i--
}
cache >>= letterIdxBits
remain--
}
return sb.String()
return bytes.String(b)
}