package utils import ( "bytes" "crypto/rand" "fmt" "math/big" mr "math/rand" "time" ) type random struct{} func Random() *random { return &random{} } // GetRandomInt 获取指定长度的随机数字 func (r random) GetRandomInt(len int) string { var numbers = []byte{0, 1, 2, 3, 4, 5, 7, 8, 9} var container string length := bytes.NewReader(numbers).Len() for i := 1; i <= len; i++ { rd, err := rand.Int(rand.Reader, big.NewInt(int64(length))) if err != nil { } container += fmt.Sprintf("%d", numbers[rd.Int64()]) } return container } // GetRandomNumber 获取指定范围内的一个随机数 func (r random) GetRandomNumber(min, max int) int { mr.Seed(time.Now().UnixNano()) rn := mr.Intn(max-min) + min return rn } // GetLiveHouseId 获取腾讯TRTC直播间Id func (r random) GetLiveHouseId() string { id := r.GetRandomNumber(1, 4294967295) return fmt.Sprintf("%d", id) } // GetRandomString 生成随机字符串 func (r random) GetRandomString(len int) string { var container string var str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" b := bytes.NewBufferString(str) length := b.Len() bigInt := big.NewInt(int64(length)) for i := 0; i < len; i++ { randomInt, _ := rand.Int(rand.Reader, bigInt) container += string(str[randomInt.Int64()]) } return container } // GetRandomStringSafe 获取去掉了iI0O1的随机字符串 func (r random) GetRandomStringSafe(len int) string { var container string var str = "abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789" b := bytes.NewBufferString(str) length := b.Len() bigInt := big.NewInt(int64(length)) for i := 0; i < len; i++ { randomInt, _ := rand.Int(rand.Reader, bigInt) container += string(str[randomInt.Int64()]) } return container }