added function generateSeed

This commit is contained in:
nfirbas 2021-12-28 16:20:12 +01:00
parent e2d171d8b4
commit 9cac79f1c5

View File

@ -10,11 +10,7 @@ import (
// MakeAvatar create svg from seed // MakeAvatar create svg from seed
func MakeAvatar(seedString string) string { func MakeAvatar(seedString string) string {
var seed uint64 seed := generateSeed(seedString)
for _, c := range []byte(seedString) {
seed = bits.RotateLeft64(seed, 8)
seed ^= uint64(c)
}
if seed&1 == 0 { if seed&1 == 0 {
return femaleAvatar(seed, "") return femaleAvatar(seed, "")
} }
@ -23,22 +19,12 @@ func MakeAvatar(seedString string) string {
// MakeFemaleAvatar create female svg from seed // MakeFemaleAvatar create female svg from seed
func MakeFemaleAvatar(seedString string) string { func MakeFemaleAvatar(seedString string) string {
var seed uint64 return femaleAvatar(generateSeed(seedString), "")
for _, c := range []byte(seedString) {
seed = bits.RotateLeft64(seed, 8)
seed ^= uint64(c)
}
return femaleAvatar(seed, "")
} }
// MakeMaleAvatar create male svg from seed // MakeMaleAvatar create male svg from seed
func MakeMaleAvatar(seedString string) string { func MakeMaleAvatar(seedString string) string {
var seed uint64 return maleAvatar(generateSeed(seedString), "")
for _, c := range []byte(seedString) {
seed = bits.RotateLeft64(seed, 8)
seed ^= uint64(c)
}
return maleAvatar(seed, "")
} }
/** /**
@ -51,6 +37,14 @@ type lcg struct {
seed uint64 seed uint64
} }
func generateSeed(seedString string) (seed uint64) {
for _, c := range []byte(seedString) {
seed = bits.RotateLeft64(seed, 8)
seed ^= uint64(c)
}
return seed
}
func (g *lcg) random() uint32 { func (g *lcg) random() uint32 {
/* Linear Congruent Generator, POSIX/glibc [de]rand48 setting, bits [47..0] are output bits */ /* Linear Congruent Generator, POSIX/glibc [de]rand48 setting, bits [47..0] are output bits */
g.seed = (25214903917*g.seed + 11) % 281474976710656 g.seed = (25214903917*g.seed + 11) % 281474976710656