1
This commit is contained in:
68
pkg/utility/seqs/rand.go
Normal file
68
pkg/utility/seqs/rand.go
Normal file
@ -0,0 +1,68 @@
|
||||
package seqs
|
||||
|
||||
import (
|
||||
cr "crypto/rand"
|
||||
"math/big"
|
||||
mr "math/rand"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 随机生成器;
|
||||
type rand struct {
|
||||
}
|
||||
|
||||
// 全局随机数;
|
||||
var rnd *mr.Rand
|
||||
|
||||
func init() {
|
||||
rnd = mr.New(mr.NewSource(time.Now().UnixNano()))
|
||||
}
|
||||
|
||||
// 构建;
|
||||
func Rand() *rand {
|
||||
return &rand{}
|
||||
}
|
||||
|
||||
// 随机数字;
|
||||
func (rd *rand) DigitId(_len int) string {
|
||||
return rd.newId([]byte("0123456789"), _len)
|
||||
}
|
||||
|
||||
// 随机字母;
|
||||
func (rd *rand) ChrtId(_len int) string {
|
||||
return rd.newId([]byte("abcdefghijklmnopqrstuvwxyz"), _len)
|
||||
}
|
||||
|
||||
// 随机混合(数字+字母);
|
||||
func (rd *rand) BothId(_len int) string {
|
||||
return rd.newId([]byte("0123456789abcdefghijklmnopqrstuvwxyz"), _len)
|
||||
}
|
||||
|
||||
// 随机范围(长整型);
|
||||
func (rd *rand) RandI64(min, max int64) int64 {
|
||||
bi, _ := cr.Int(cr.Reader, big.NewInt(max-min))
|
||||
return min + bi.Int64()
|
||||
}
|
||||
|
||||
// 随机范围(0 ~ max);
|
||||
func (rd *rand) RandInt(max int) int {
|
||||
return rnd.Intn(max)
|
||||
}
|
||||
|
||||
// 随机中文;
|
||||
func (rd *rand) ChrtCn(_len int) string {
|
||||
a := make([]rune, _len)
|
||||
for i := range a {
|
||||
a[i] = rune(rd.RandI64(19968, 40869))
|
||||
}
|
||||
return string(a)
|
||||
}
|
||||
|
||||
// newId;
|
||||
func (rd *rand) newId(tmpl []byte, _len int) string {
|
||||
var r []byte
|
||||
for i := 0; i < _len; i++ {
|
||||
r = append(r, tmpl[rnd.Intn(len(tmpl))])
|
||||
}
|
||||
return string(r)
|
||||
}
|
||||
Reference in New Issue
Block a user