package generators import ( "encoding/json" "math/rand" "os" ) type DevaData struct { Male struct { Nm1 []string `json:"nm1"` Nm2 []string `json:"nm2"` Nm3 []string `json:"nm3"` Nm4 []string `json:"nm4"` Nm5 []string `json:"nm5"` } `json:"male"` Female struct { Nm1 []string `json:"nm1"` Nm2 []string `json:"nm2"` Nm3 []string `json:"nm3"` Nm4 []string `json:"nm4"` Nm5 []string `json:"nm5"` Nm6 []string `json:"nm6"` Nm7 []string `json:"nm7"` Nm8 []string `json:"nm8"` Nm9 []string `json:"nm9"` Nm10 []string `json:"nm10"` Nm11 []string `json:"nm11"` } `json:"female"` } var devaData DevaData func LoadDevaData(path string) error { file, err := os.Open(path) if err != nil { return err } defer file.Close() return json.NewDecoder(file).Decode(&devaData) } func GenerateDevaName(gender string) string { if gender == "female" { return generateDevaFemaleName() } return generateDevaMaleName() } func generateDevaMaleName() string { m := devaData.Male rnd := rand.Intn(len(m.Nm1)) rnd2 := rand.Intn(len(m.Nm2)) rnd3 := rand.Intn(len(m.Nm3)) rnd4 := rand.Intn(len(m.Nm4)) rnd5 := rand.Intn(len(m.Nm5)) for m.Nm3[rnd3] == m.Nm1[rnd] || m.Nm3[rnd3] == m.Nm5[rnd5] { rnd3 = rand.Intn(len(m.Nm3)) } return m.Nm1[rnd] + m.Nm2[rnd2] + m.Nm3[rnd3] + m.Nm4[rnd4] + m.Nm5[rnd5] } func generateDevaFemaleName() string { f := devaData.Female i := rand.Intn(10) if i < 6 { rnd := rand.Intn(len(f.Nm6)) rnd2 := rand.Intn(len(f.Nm7)) rnd3 := rand.Intn(len(f.Nm8)) rnd4 := rand.Intn(len(f.Nm9)) rnd5 := rand.Intn(len(f.Nm11)) for f.Nm8[rnd3] == f.Nm6[rnd] || f.Nm8[rnd3] == f.Nm11[rnd5] { rnd3 = rand.Intn(len(f.Nm8)) } return f.Nm6[rnd] + f.Nm7[rnd2] + f.Nm8[rnd3] + f.Nm9[rnd4] + f.Nm11[rnd5] } else { rnd := rand.Intn(len(f.Nm6)) rnd2 := rand.Intn(len(f.Nm7)) rnd3 := rand.Intn(len(f.Nm8)) rnd4 := rand.Intn(len(f.Nm9)) rnd5 := rand.Intn(len(f.Nm10)) rnd6 := rand.Intn(len(f.Nm9)) rnd7 := rand.Intn(len(f.Nm11)) for f.Nm10[rnd5] == f.Nm11[rnd7] || f.Nm10[rnd5] == f.Nm8[rnd3] { rnd5 = rand.Intn(len(f.Nm10)) } return f.Nm6[rnd] + f.Nm7[rnd2] + f.Nm8[rnd3] + f.Nm9[rnd4] + f.Nm10[rnd5] + f.Nm9[rnd6] + f.Nm11[rnd7] } }