From 3153ff149facaecff9e67bae11116bde0024f8a6 Mon Sep 17 00:00:00 2001 From: Bobo Date: Tue, 8 Apr 2025 19:58:05 +0800 Subject: [PATCH] feat: Seeder --- rand/{randomizer.go => seeder.go} | 18 ++++++++-------- rand/{randomizer_test.go => seeder_test.go} | 24 ++++++++++----------- 2 files changed, 21 insertions(+), 21 deletions(-) rename rand/{randomizer.go => seeder.go} (83%) rename rand/{randomizer_test.go => seeder_test.go} (74%) diff --git a/rand/randomizer.go b/rand/seeder.go similarity index 83% rename from rand/randomizer.go rename to rand/seeder.go index 04af3bf..983f603 100644 --- a/rand/randomizer.go +++ b/rand/seeder.go @@ -19,17 +19,17 @@ const ( RandomStringSeed SeedType = "RandomString" ) -type Randomizer struct { +type Seeder struct { seedType SeedType } -func NewRandomizer(seedType SeedType) *Randomizer { - return &Randomizer{ +func NewSeeder(seedType SeedType) *Seeder { + return &Seeder{ seedType: seedType, } } -func (r *Randomizer) UnixNano() int64 { +func (r *Seeder) UnixNano() int64 { // 获取当前时间戳 timestamp := time.Now().UnixNano() @@ -50,11 +50,11 @@ func (r *Randomizer) UnixNano() int64 { return seed } -func (r *Randomizer) MapHash() int64 { +func (r *Seeder) MapHash() int64 { return int64(new(maphash.Hash).Sum64()) } -func (r *Randomizer) CryptoRand() int64 { +func (r *Seeder) CryptoRand() int64 { var b [8]byte _, err := cryptoRand.Read(b[:]) if err != nil { @@ -66,7 +66,7 @@ func (r *Randomizer) CryptoRand() int64 { var Alpha = "abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789" -func (r *Randomizer) RandomString() int64 { +func (r *Seeder) RandomString() int64 { const size = 8 buf := make([]byte, size) for i := 0; i < size; i++ { @@ -77,7 +77,7 @@ func (r *Randomizer) RandomString() int64 { return seed } -func (r *Randomizer) Seed() int64 { +func (r *Seeder) Seed() int64 { switch r.seedType { default: fallthrough @@ -94,6 +94,6 @@ func (r *Randomizer) Seed() int64 { // Seed generates a seed based on the specified SeedType. func Seed(seedType SeedType) int64 { - randomizer := NewRandomizer(seedType) + randomizer := NewSeeder(seedType) return randomizer.Seed() } diff --git a/rand/randomizer_test.go b/rand/seeder_test.go similarity index 74% rename from rand/randomizer_test.go rename to rand/seeder_test.go index 73f3923..924f731 100644 --- a/rand/randomizer_test.go +++ b/rand/seeder_test.go @@ -5,45 +5,45 @@ import ( "testing" ) -func TestUnixNano(t *testing.T) { - randomizer := NewRandomizer(UnixNanoSeed) +func TestUnixNanoSeed(t *testing.T) { + seeder := NewSeeder(UnixNanoSeed) var seeds = make(map[int64]bool) for i := 0; i < 100000; i++ { - seed := randomizer.Seed() + seed := seeder.Seed() seeds[seed] = true } fmt.Println("UnixNano Seed", len(seeds)) } -func TestMapHash(t *testing.T) { - randomizer := NewRandomizer(MapHashSeed) +func TestMapHashSeed(t *testing.T) { + seeder := NewSeeder(MapHashSeed) var seeds = make(map[int64]bool) for i := 0; i < 100000; i++ { - seed := randomizer.Seed() + seed := seeder.Seed() seeds[seed] = true } fmt.Println("MapHash Seed", len(seeds)) } -func TestCryptoRand(t *testing.T) { - randomizer := NewRandomizer(CryptoRandSeed) +func TestCryptoRandSeed(t *testing.T) { + seeder := NewSeeder(CryptoRandSeed) var seeds = make(map[int64]bool) for i := 0; i < 100000; i++ { - seed := randomizer.Seed() + seed := seeder.Seed() seeds[seed] = true } fmt.Println("CryptoRand Seed", len(seeds)) } -func TestRandomString(t *testing.T) { - randomizer := NewRandomizer(RandomStringSeed) +func TestRandomStringSeed(t *testing.T) { + seeder := NewSeeder(RandomStringSeed) var seeds = make(map[int64]bool) for i := 0; i < 100000; i++ { - seed := randomizer.Seed() + seed := seeder.Seed() seeds[seed] = true } fmt.Println("RandomString Seed", len(seeds))