70 lines
1.4 KiB
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)
|
|
}
|