From 27c627e06107f8a4fa472bc1daeede6b60951f6f Mon Sep 17 00:00:00 2001 From: Hidenari-Yuda <106872451+hidenari-yuda@users.noreply.github.com> Date: Tue, 14 Feb 2023 19:48:02 +0900 Subject: [PATCH] fix: rand.Seed() deparcated (#624) * fix rand.Seed fix rand.Seed * fix rand.Seed fix rand.Seed fix unexpected format change fix unexpected format change * fix unexpected format change --------- Co-authored-by: Andrii Siriak --- cipher/caesar/caesar_test.go | 4 ++-- graph/lowestcommonancestor_test.go | 14 +++++++------- sort/sorts_test.go | 4 ++-- strings/genetic/genetic.go | 16 ++++++++-------- structure/tree/avl_test.go | 4 ++-- structure/tree/bstree_test.go | 4 ++-- structure/tree/rbtree_test.go | 4 ++-- 7 files changed, 25 insertions(+), 25 deletions(-) diff --git a/cipher/caesar/caesar_test.go b/cipher/caesar/caesar_test.go index 4d03ea3ec..1e22a8c34 100644 --- a/cipher/caesar/caesar_test.go +++ b/cipher/caesar/caesar_test.go @@ -156,10 +156,10 @@ func Example() { } func FuzzCaesar(f *testing.F) { - rand.Seed(time.Now().Unix()) + rnd := rand.New(rand.NewSource(time.Now().UnixNano())) f.Add("The Quick Brown Fox Jumps over the Lazy Dog.") f.Fuzz(func(t *testing.T, input string) { - key := rand.Intn(26) + key := rnd.Intn(26) if result := Decrypt(Encrypt(input, key), key); result != input { t.Fatalf("With input: '%s' and key: %d\n\tExpected: '%s'\n\tGot: '%s'", input, key, input, result) } diff --git a/graph/lowestcommonancestor_test.go b/graph/lowestcommonancestor_test.go index c7149e46e..ab55219fb 100644 --- a/graph/lowestcommonancestor_test.go +++ b/graph/lowestcommonancestor_test.go @@ -147,11 +147,11 @@ func TestLCA(t *testing.T) { } func generateTree() *Tree { - rand.Seed(time.Now().UnixNano()) + rnd := rand.New(rand.NewSource(time.Now().UnixNano())) const MAXVERTEX int = 2000 - var numbersVertex int = rand.Intn(MAXVERTEX) + 1 - var root int = rand.Intn(numbersVertex) + var numbersVertex int = rnd.Intn(MAXVERTEX) + 1 + var root int = rnd.Intn(numbersVertex) var edges []TreeEdge var fullGraph []TreeEdge @@ -163,7 +163,7 @@ func generateTree() *Tree { }) } } - rand.Shuffle(len(fullGraph), func(i, j int) { + rnd.Shuffle(len(fullGraph), func(i, j int) { fullGraph[i], fullGraph[j] = fullGraph[j], fullGraph[i] }) @@ -201,7 +201,7 @@ func generateTree() *Tree { } func generateQuery(tree *Tree) []Query { - rand.Seed(time.Now().UnixNano()) + rnd := rand.New(rand.NewSource(time.Now().UnixNano())) const MAXQUERY = 50 var queries []Query @@ -217,8 +217,8 @@ func generateQuery(tree *Tree) []Query { } for q := 1; q <= MAXQUERY; q++ { - u := rand.Intn(tree.numbersVertex) - v := rand.Intn(tree.numbersVertex) + u := rnd.Intn(tree.numbersVertex) + v := rnd.Intn(tree.numbersVertex) queries = append(queries, Query{ u: u, v: v, diff --git a/sort/sorts_test.go b/sort/sorts_test.go index 9f34a23cb..7ff8b4363 100644 --- a/sort/sorts_test.go +++ b/sort/sorts_test.go @@ -106,11 +106,11 @@ func TestMergeParallel(t *testing.T) { // Test parallel merge sort with a large slice t.Run("ParallelMerge on large slice", func(t *testing.T) { - rand.Seed(time.Now().UnixNano()) + rnd := rand.New(rand.NewSource(time.Now().UnixNano())) size := 100000 randomLargeSlice := make([]int, size) for i := range randomLargeSlice { - randomLargeSlice[i] = rand.Intn(size) + randomLargeSlice[i] = rnd.Intn(size) } sortedSlice := sort.ParallelMerge[int](randomLargeSlice) for i := 0; i < len(sortedSlice)-1; i++ { diff --git a/strings/genetic/genetic.go b/strings/genetic/genetic.go index 95fc05fa6..384ecf940 100644 --- a/strings/genetic/genetic.go +++ b/strings/genetic/genetic.go @@ -92,7 +92,7 @@ func GeneticString(target string, charmap []rune, conf *Conf) (*Result, error) { debug := conf.Debug // Just a seed to improve randomness required by the algorithm - rand.Seed(time.Now().UnixNano()) + rnd := rand.New(rand.NewSource(time.Now().UnixNano())) // Verify that the target contains no genes besides the ones inside genes variable. for position, r := range target { @@ -113,7 +113,7 @@ func GeneticString(target string, charmap []rune, conf *Conf) (*Result, error) { for i := 0; i < populationNum; i++ { key := "" for x := 0; x < utf8.RuneCountInString(target); x++ { - choice := rand.Intn(len(charmap)) + choice := rnd.Intn(len(charmap)) key += string(charmap[choice]) } pop[i] = PopulationItem{key, 0} @@ -165,18 +165,18 @@ func GeneticString(target string, charmap []rune, conf *Conf) (*Result, error) { nChild = 10 } for x := 0.0; x < nChild; x++ { - parent2 := pop[rand.Intn(selectionNum)] + parent2 := pop[rnd.Intn(selectionNum)] // Crossover - split := rand.Intn(utf8.RuneCountInString(target)) + split := rnd.Intn(utf8.RuneCountInString(target)) child1 := append([]rune(parent1.Key)[:split], []rune(parent2.Key)[split:]...) child2 := append([]rune(parent2.Key)[:split], []rune(parent1.Key)[split:]...) // Clean fitness value // Mutate - if rand.Float64() < mutationProb { - child1[rand.Intn(len(child1))] = charmap[rand.Intn(len(charmap))] + if rnd.Float64() < mutationProb { + child1[rnd.Intn(len(child1))] = charmap[rnd.Intn(len(charmap))] } - if rand.Float64() < mutationProb { - child2[rand.Intn(len(child2))] = charmap[rand.Intn(len(charmap))] + if rnd.Float64() < mutationProb { + child2[rnd.Intn(len(child2))] = charmap[rnd.Intn(len(charmap))] } // Push into 'popChildren' popChildren = append(popChildren, PopulationItem{string(child1), 0}) diff --git a/structure/tree/avl_test.go b/structure/tree/avl_test.go index 14a7ab570..70913499a 100644 --- a/structure/tree/avl_test.go +++ b/structure/tree/avl_test.go @@ -284,9 +284,9 @@ func TestAVLDelete(t *testing.T) { t.Run("Random Test", func(t *testing.T) { nums := []int{100, 500, 1000, 10_000} for _, n := range nums { - rand.Seed(time.Now().Unix()) + rnd := rand.New(rand.NewSource(time.Now().UnixNano())) tree := bt.NewAVL[int]() - nums := rand.Perm(n) + nums := rnd.Perm(n) tree.Push(nums...) rets := tree.InOrder() diff --git a/structure/tree/bstree_test.go b/structure/tree/bstree_test.go index abbf8bfea..211daa28a 100644 --- a/structure/tree/bstree_test.go +++ b/structure/tree/bstree_test.go @@ -154,9 +154,9 @@ func TestDelete(t *testing.T) { t.Run("Random Test", func(t *testing.T) { tests := []int{100, 500, 1000, 10_000} for _, n := range tests { - rand.Seed(time.Now().Unix()) + rnd := rand.New(rand.NewSource(time.Now().UnixNano())) tree := bt.NewBinarySearch[int]() - nums := rand.Perm(n) + nums := rnd.Perm(n) tree.Push(nums...) rets := tree.InOrder() diff --git a/structure/tree/rbtree_test.go b/structure/tree/rbtree_test.go index a609aa7d2..1b6b38265 100644 --- a/structure/tree/rbtree_test.go +++ b/structure/tree/rbtree_test.go @@ -85,9 +85,9 @@ func TestRBTreeDelete(t *testing.T) { func TestRBTree(t *testing.T) { testcases := []int{100, 200, 1000, 10000} for _, n := range testcases { - rand.Seed(time.Now().Unix()) + rnd := rand.New(rand.NewSource(time.Now().UnixNano())) tree := bt.NewRB[int]() - nums := rand.Perm(n) + nums := rnd.Perm(n) tree.Push(nums...) rets := tree.InOrder()