Skip to main content
Glama
random.go1.86 kB
package utils import ( "crypto/rand" "math/big" ) const charset = "abcdefghijklmnopqrstuvwxyz0123456789" // RandNDigitInt generates a random number with n digits func RandNDigitInt(n int) int { if n <= 0 { return 0 } _min := intPow(10, n-1) _max := intPow(10, n) - 1 // 使用 int64 进行计算以避免溢出 r := int64(_max) - int64(_min) + 1 if r <= 0 { // 如果范围无效,返回最小值 return _min } // 使用 crypto/rand 生成安全随机数 randomNum, err := rand.Int(rand.Reader, big.NewInt(r)) if err != nil { // 如果生成随机数失败,返回最小值 return _min } return int(randomNum.Int64()) + _min } // RandInt generates a random number between min and max func RandInt(min, max int) int { if min > max { min, max = max, min } // 使用 int64 进行计算以避免溢出 r := int64(max) - int64(min) + 1 if r <= 0 { // 如果范围无效,返回最小值 return min } // 使用 crypto/rand 生成安全随机数 randomNum, err := rand.Int(rand.Reader, big.NewInt(r)) if err != nil { // 如果生成随机数失败,返回最小值 return min } return int(randomNum.Int64()) + min } // RandNLengthString generates a random string of specified length using the default charset func RandNLengthString(n int) string { if n <= 0 { return "" } result := make([]byte, n) for i := range result { // 使用 crypto/rand 生成安全随机索引 randomIndex, err := rand.Int(rand.Reader, big.NewInt(int64(len(charset)))) if err != nil { // 如果生成随机数失败,使用第一个字符 result[i] = charset[0] continue } result[i] = charset[randomIndex.Int64()] } return string(result) } // intPow is a helper function to calculate power of 10 func intPow(base, exp int) int { result := 1 for exp > 0 { result *= base exp-- } return result }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/weibaohui/k8m'

If you have feedback or need assistance with the MCP directory API, please join our Discord server