feat: Seeder

This commit is contained in:
Bobo
2025-04-08 19:58:05 +08:00
parent 578cf26ee8
commit 3153ff149f
2 changed files with 21 additions and 21 deletions

View File

@@ -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()
}

View File

@@ -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))