|
- package utils
-
- import (
- crand "crypto/rand"
- "fmt"
- "math/big"
- "math/rand"
- "time"
- )
-
- func RandString(l int, c ...string) string {
- var (
- chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
- str string
- num *big.Int
- )
- if len(c) > 0 {
- chars = c[0]
- }
- chrLen := int64(len(chars))
- for len(str) < l {
- num, _ = crand.Int(crand.Reader, big.NewInt(chrLen))
- str += string(chars[num.Int64()])
- }
- return str
- }
-
- func RandNum() string {
- seed := time.Now().UnixNano() + rand.Int63()
- return fmt.Sprintf("%05v", rand.New(rand.NewSource(seed)).Int31n(1000000))
- }
-
- //x的y次方
- func RandPow(l int) string {
- var i = "1"
- for j := 0; j < l; j++ {
- i += "0"
- }
- k := StrToInt64(i)
- n := rand.New(rand.NewSource(time.Now().UnixNano())).Int63n(k)
- ls := "%0" + IntToStr(l) + "v"
- str := fmt.Sprintf(ls, n)
- //min := int(math.Pow10(l - 1))
- //max := int(math.Pow10(l) - 1)
- return str
- }
|