geoGo/pkg/rand.go

42 lines
1.0 KiB
Go

package pkg
import (
"math/rand/v2"
)
// GenerateRandomStringCustom 使用自定义字符集
func GenerateRandomStringCustom(n int, charset string) string {
result := make([]byte, n)
for i := range result {
result[i] = charset[rand.IntN(len(charset))]
}
return string(result)
}
// 纯数字字符串
func GenerateRandomNumberString(n int) string {
return GenerateRandomStringCustom(n, "0123456789")
}
// 纯小写字母
func GenerateRandomLowerString(n int) string {
return GenerateRandomStringCustom(n, "abcdefghijklmnopqrstuvwxyz")
}
// 纯大写字母
func GenerateRandomUpperString(n int) string {
return GenerateRandomStringCustom(n, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
}
// 使用自定义随机源(例如固定种子)
func GenerateRandomStringWithSeed(n int, seed uint64) string {
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
rng := rand.New(rand.NewPCG(seed, seed))
result := make([]byte, n)
for i := range result {
result[i] = charset[rng.IntN(len(charset))]
}
return string(result)
}