42 lines
1.0 KiB
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)
|
|
}
|