From 12ad57f6255a1f945b36d14642496f7332703741 Mon Sep 17 00:00:00 2001 From: d3ext Date: Mon, 25 Nov 2024 13:38:00 +0100 Subject: [PATCH] Windows fix. RandomString and RandomInt functions didn't work as expected --- utils/rand.go | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/utils/rand.go b/utils/rand.go index 2fc5332..6edba97 100644 --- a/utils/rand.go +++ b/utils/rand.go @@ -1,33 +1,23 @@ package utils import ( - "math/rand" - "time" + "math/rand/v2" ) // Generate a random integer between range -func RandomInt(min int, max int) int { - rand.Seed(time.Now().UnixNano()) - rand_int := rand.Intn(max-min+1) + min - return rand_int +func RandomInt(min, max int) int { + return rand.IntN(max+1-min) + min } -// Return random string based on an integer (length) -func RandomString(length int) string { - const charset = "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" +const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" - var seededRand *rand.Rand = rand.New(rand.NewSource(time.Now().UnixNano())) +// Return random string on n length +func RandomString(n int) string { + b := make([]byte, n) + for i := range b { + b[i] = letterBytes[rand.IntN(len(letterBytes))] + } - b := make([]byte, length) - for i := range b { - b[i] = charset[seededRand.Intn(len(charset))] - } - - // Ensure the first character is not an integer - for b[0] >= '0' && b[0] <= '9' { - b[0] = charset[seededRand.Intn(len(charset))] - } - - return string(b) + return string(b) }