Files
hiscaler-gox/randx/rand.go
scheibling b4eb50ab55
Some checks failed
Go / build (push) Failing after 7s
Created
2025-04-08 19:16:39 +02:00

47 lines
927 B
Go

package randx
import (
"crypto/rand"
"math/big"
"strings"
)
const (
randNumberChars = "0123456789"
randLetterChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
)
func generateValues(str string, n int, upper bool) string {
if n <= 0 {
return ""
}
sb := strings.Builder{}
sb.Grow(n)
bigInt := big.NewInt(int64(len(str)))
for i := 0; i < n; i++ {
randomInt, _ := rand.Int(rand.Reader, bigInt)
sb.WriteByte(str[randomInt.Int64()])
}
s := sb.String()
if upper {
s = strings.ToUpper(s)
}
return s
}
// Letter Generate letter rand string
func Letter(n int, upper bool) string {
return generateValues(randLetterChars, n, upper)
}
// Number Generate number rand string
func Number(n int) string {
return generateValues(randNumberChars, n, false)
}
// Any Generate number and letter combined string
func Any(n int) string {
return generateValues(randLetterChars+randNumberChars, n, false)
}