mirror of
https://github.com/pyihe/go-pkg.git
synced 2025-10-19 06:14:36 +08:00
rand
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
Reference in New Issue
Block a user