| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 
							- package my_util
 
- import (
 
- 	"math/rand"
 
- 	"strings"
 
- 	"time"
 
- )
 
- func RandomSecondDuration(min, max int32) time.Duration {
 
- 	tmp := src.Int31n(max-min) + min
 
- 	return time.Duration(tmp) * time.Second
 
- }
 
- func RandStringBytesMaskImprSrcSB(n int) string {
 
- 	sb := strings.Builder{}
 
- 	sb.Grow(n)
 
- 	// A src.Int63() generates 63 random bits, enough for letterIdxMax characters!
 
- 	for i, cache, remain := n-1, src.Int63(), letterIdxMax; i >= 0; {
 
- 		if remain == 0 {
 
- 			cache, remain = src.Int63(), letterIdxMax
 
- 		}
 
- 		if idx := int(cache & letterIdxMask); idx < len(letterBytes) {
 
- 			sb.WriteByte(letterBytes[idx])
 
- 			i--
 
- 		}
 
- 		cache >>= letterIdxBits
 
- 		remain--
 
- 	}
 
- 	return sb.String()
 
- }
 
- var (
 
- 	src = rand.New(rand.NewSource(time.Now().UnixNano()))
 
- )
 
- const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
 
- const (
 
- 	letterIdxBits = 6                    // 6 bits to represent a letter index
 
- 	letterIdxMask = 1<<letterIdxBits - 1 // All 1-bits, as many as letterIdxBits
 
- 	letterIdxMax  = 63 / letterIdxBits   // # of letter indices fitting in 63 bits
 
- )
 
 
  |