func IpV4Address() string {
	blocks := []string{}
	for i := 0; i < 4; i++ {
		number := seedAndReturnRandom(255)
		blocks = append(blocks, strconv.Itoa(number))
	}
	return strings.Join(blocks, ".")
}
Returns a valid IPv4 address as string
package randomdata
import (
	"encoding/json"
	"fmt"
	"log"
	"math/rand"
	"strconv"
	"strings"
	"time"
	"unicode"
)
const (
	Male         int = 0
	Female       int = 1
	RandomGender int = 2
)
const (
	Small int = 0
	Large int = 1
)
const (
	FullCountry      = 0
	TwoCharCountry   = 1
	ThreeCharCountry = 2
)
type jsonContent struct {
	Adjectives          []string `json:adjectives`
	Nouns               []string `json:nouns`
	FirstNamesFemale    []string `json:firstNamesFemale`
	FirstNamesMale      []string `json:firstNamesMale`
	LastNames           []string `json:lastNames`
	Domains             []string `json:domains`
	People              []string `json:people`
	StreetTypes         []string `json:streetTypes`  
	Paragraphs          []string `json:paragraphs`   
	Countries           []string `json:countries`    
	CountriesThreeChars []string `json:countriesThreeChars`
	CountriesTwoChars   []string `json:countriesTwoChars`
	Currencies          []string `json:currencies`  
	Cities              []string `json:cities`
	States              []string `json:states`
	StatesSmall         []string `json:statesSmall`
	Days                []string `json:days`
	Months              []string `json:months`
}
var jsonData = jsonContent{}
func init() {
	jsonData = jsonContent{}
	err := json.Unmarshal(data, &jsonData)
	if err != nil {
		log.Fatal(err)
	}
}
func seedAndReturnRandom(n int) int {
	rand.Seed(time.Now().UnixNano())
	return rand.Intn(n)
}
func seedAndReturnRandomFloat() float64 {
	rand.Seed(time.Now().UnixNano())
	return rand.Float64()
}
func randomFrom(source []string) string {
	return source[seedAndReturnRandom(len(source))]
}
func FirstName(gender int) string {
	var name = ""
	switch gender {
	case Male:
		name = randomFrom(jsonData.FirstNamesMale)
		break
	case Female:
		name = randomFrom(jsonData.FirstNamesFemale)
		break
	default:
		rand.Seed(time.Now().UnixNano())
		name = FirstName(rand.Intn(2))
		break
	}
	return name
}
func LastName() string {
	return randomFrom(jsonData.LastNames)
}
func FullName(gender int) string {
	return FirstName(gender) + " " + LastName()
}
func Email() string {
	return strings.ToLower(FirstName(RandomGender)+LastName()) + "@" + randomFrom(jsonData.Domains)
}
func Country(countryStyle int64) string {
	country := ""
	switch countryStyle {
	default:
	case FullCountry:
		country = randomFrom(jsonData.Countries)
		break
	case TwoCharCountry:
		country = randomFrom(jsonData.CountriesTwoChars)
		break
	case ThreeCharCountry:
		country = randomFrom(jsonData.CountriesThreeChars)
		break
	}
	return country
}
func Currency() string {
	return randomFrom(jsonData.Currencies)
}
func City() string {
	return randomFrom(jsonData.Cities)
}
func State(typeOfState int) string {
	if typeOfState == Small {
		return randomFrom(jsonData.StatesSmall)
	} else {
		return randomFrom(jsonData.States)
	}
	return ""
}
func Street() string {
	return fmt.Sprintf("%s %s", randomFrom(jsonData.People), randomFrom(jsonData.StreetTypes))
}
func Address() string {
	return fmt.Sprintf("%d %s,\n%s, %s, %s", Number(100), Street(), City(), State(Small), PostalCode("US"))
}
func Paragraph() string {
	return randomFrom(jsonData.Paragraphs)
}
func Number(numberRange ...int) int {
	nr := 0
	rand.Seed(time.Now().UnixNano())
	if len(numberRange) > 1 {
		nr = 1
		nr = seedAndReturnRandom(numberRange[1]-numberRange[0]) + numberRange[0]
	} else {
		nr = seedAndReturnRandom(numberRange[0])
	}
	return nr
}
func Decimal(numberRange ...int) float64 {
	nr := 0.0
	rand.Seed(time.Now().UnixNano())
	if len(numberRange) > 1 {
		nr = 1.0
		nr = seedAndReturnRandomFloat()*(float64(numberRange[1])-float64(numberRange[0])) + float64(numberRange[0])
	} else {
		nr = seedAndReturnRandomFloat() * float64(numberRange[0])
	}
	if len(numberRange) > 2 {
		sf := strconv.FormatFloat(nr, 'f', numberRange[2], 64)
		nr, _ = strconv.ParseFloat(sf, 64)
	}
	return nr
}
func StringNumberExt(numberPairs int, separator string, numberOfDigits int) string {
	numberString := ""
	for i := 0; i < numberPairs; i++ {
		for d := 0; d < numberOfDigits; d++ {
			numberString += fmt.Sprintf("%d", Number(0, 9))
		}
		if i+1 != numberPairs {
			numberString += separator
		}
	}
	return numberString
}
func StringNumber(numberPairs int, separator string) string {
	return StringNumberExt(numberPairs, separator, 2)
}
func Boolean() bool {
	nr := seedAndReturnRandom(2)
	return nr != 0
}
func Noun() string {
	return randomFrom(jsonData.Nouns)
}
func Adjective() string {
	return randomFrom(jsonData.Adjectives)
}
func uppercaseFirstLetter(word string) string {
	a := []rune(word)
	a[0] = unicode.ToUpper(a[0])
	return string(a)
}
func lowercaseFirstLetter(word string) string {
	a := []rune(word)
	a[0] = unicode.ToLower(a[0])
	return string(a)
}
func SillyName() string {
	return uppercaseFirstLetter(Noun()) + Adjective()
}