OSGOS_D1/custom/helper/routines.go

70 lines
1.4 KiB
Go

// OSGOS helper
// =======================================================================================================
// Author: LLC Texnico <main@texnico.ru>
// All rights reserved
// Russia, Chelyabinsk, 2022-2024
package main
import (
"bytes"
"math/rand"
"sync"
"time"
)
var (
mutexRandom sync.Mutex
counterRandom int64
)
func RandomString(l int) string {
mutexRandom.Lock()
counterRandom++
rand.Seed(time.Now().UTC().UnixNano() + counterRandom)
var result bytes.Buffer
var temp string
for i := 0; i < l; {
t := RandInt(0, 3)
if t == 1 {
temp = string(rune(RandInt(48, 58)))
} else if t == 2 {
temp = string(rune(RandInt(65, 91)))
} else {
temp = string(rune(RandInt(97, 123)))
}
result.WriteString(temp)
i++
}
mutexRandom.Unlock()
return result.String()
}
func RandomStringOnlyAlphabetic(l int) string {
mutexRandom.Lock()
counterRandom++
rand.Seed(time.Now().UTC().UnixNano() + counterRandom)
var result bytes.Buffer
var temp string
for i := 0; i < l; {
t := RandInt(0, 2)
if t == 1 {
temp = string(rune(RandInt(97, 123)))
} else {
temp = string(rune(RandInt(65, 91)))
}
result.WriteString(temp)
i++
}
mutexRandom.Unlock()
return result.String()
}
func RandFloat(min float64, max float64) float64 {
return min + rand.Float64()*(max-min)
}
func RandInt(min int, max int) int {
return min + rand.Intn(max-min)
}