71 lines
2.0 KiB
Go
71 lines
2.0 KiB
Go
package random
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
"strconv"
|
|
)
|
|
|
|
// ChineseName 返回一个随机组成的中文姓名。
|
|
func ChineseName() string {
|
|
var first string // 名
|
|
// 随机产生2位或者3位的名
|
|
for i := 0; i <= rand.Intn(1); i++ {
|
|
first = fmt.Sprint(firstName[rand.Intn(firstNameLen-1)])
|
|
}
|
|
//返回姓名
|
|
return fmt.Sprintf("%s%s", fmt.Sprint(lastName[rand.Intn(lastNameLen-1)]), first)
|
|
}
|
|
|
|
// EnglishName 返回一个随机组成的英文姓名。
|
|
func EnglishName() string {
|
|
var englishName string
|
|
for i := 0; i <= rand.Intn(1); i++ {
|
|
englishName = fmt.Sprint(engName[rand.Intn(englishNameLen-1)])
|
|
}
|
|
first := engName[rand.Intn(englishNameLen-1)]
|
|
last := englishName
|
|
if first == last {
|
|
return first
|
|
} else {
|
|
return fmt.Sprintf("%s %s", fmt.Sprint(engName[rand.Intn(englishNameLen-1)]), englishName)
|
|
}
|
|
}
|
|
|
|
// Name 返回一个随机组成的中文或英文姓名
|
|
// - 以1/2的概率决定生产的是中文还是英文姓名。
|
|
func Name() string {
|
|
if Int64(0, 1000) > 500 {
|
|
return EnglishName()
|
|
} else {
|
|
return ChineseName()
|
|
}
|
|
}
|
|
|
|
// NumberString 返回一个介于min和max之间的string类型的随机数。
|
|
func NumberString(min int, max int) string {
|
|
return strconv.Itoa(int(Int64(int64(min), int64(max))))
|
|
}
|
|
|
|
// NumberStringRepair 返回一个介于min和max之间的string类型的随机数
|
|
// - 通过Int64生成一个随机数,当结果的字符串长度小于max的字符串长度的情况下,使用0在开头补齐。
|
|
func NumberStringRepair(min int, max int) string {
|
|
result := strconv.Itoa(int(Int64(int64(min), int64(max))))
|
|
for i := len(result); i < len(strconv.Itoa(max)); i++ {
|
|
result = "0" + result
|
|
}
|
|
return result
|
|
}
|
|
|
|
// HostName 返回一个随机产生的hostname。
|
|
func HostName() string {
|
|
str := "0123456789abcdefghijklmnopqrstuvwxyz"
|
|
bytes := []byte(str)
|
|
var hostname []byte
|
|
r := rand.New(rand.NewSource(Int64(0, 999999)))
|
|
for i := 0; i < 12; i++ {
|
|
hostname = append(hostname, bytes[r.Intn(len(bytes))])
|
|
}
|
|
return string(hostname)
|
|
}
|