From fef6fd7b9d675f173dfea4a481f972ab9685dce3 Mon Sep 17 00:00:00 2001 From: dudaodong Date: Thu, 23 Feb 2023 11:51:26 +0800 Subject: [PATCH] fix: fix issue #75 --- random/random.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/random/random.go b/random/random.go index d3158b8..0e3c383 100644 --- a/random/random.go +++ b/random/random.go @@ -19,16 +19,21 @@ const ( LETTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ) +func init() { + rand.Seed(time.Now().UnixNano()) +} + // RandInt generate random int between min and max, maybe min, not be max func RandInt(min, max int) int { if min == max { return min } + if max < min { min, max = max, min } - r := rand.New(rand.NewSource(time.Now().UnixNano())) - return r.Intn(max-min) + min + + return rand.Intn(max-min) + min } // RandBytes generate random byte slice @@ -72,9 +77,12 @@ func RandNumeralOrLetter(length int) string { // random generate a random string based on given string range func random(s string, length int) string { b := make([]byte, length) - r := rand.New(rand.NewSource(time.Now().UnixNano())) + + // fix: https://github.com/duke-git/lancet/issues/75 + // r := rand.New(rand.NewSource(time.Now().UnixNano())) + for i := range b { - b[i] = s[r.Int63()%int64(len(s))] + b[i] = s[rand.Int63()%int64(len(s))] } return string(b) }