我想为邀请码生成号码。
我得到一个数字,我需要根据这个数字生成一个字符串。
示例: 对于3我需要在111和999之间生成一个字符串号 适用4 1111至9999 2 11至99 等等...
最好的方法是什么?
我有一个想法,例如用x表示两个空字符串,其中第一个填充为1,根据X填充为第二个为9。
然后将它们转换为int并在这两个数字之间进行随机选择,但我不认为这是实现此目标的最佳方法。
package main
import (
"fmt"
"math/rand"
"strconv"
"time"
)
func randInt(min int, max int) int {
return min + rand.Intn(max-min)
}
func main() {
x := 3
first := ""
second := ""
i := 0
for i < x {
first = first + "1"
i = i + 1
}
i = 0
for i < x {
second = second + "9"
i = i + 1
}
rand.Seed(time.Now().UTC().UnixNano())
fmt.Println(first)
fmt.Println(second)
firstInt, _ := strconv.Atoi(first)
secondInt, _ := strconv.Atoi(second)
fmt.Println(randInt(firstInt, secondInt))
}
致谢
答案 0 :(得分:1)
您可以执行以下操作:
package main
import (
"fmt"
"math/rand"
"time"
)
func init() {
rand.Seed(time.Now().UnixNano())
}
var numbers = []rune("0123456789")
func GenerateNumberString(length int) string {
b := make([]rune, length)
for i := range b {
b[i] = numbers[rand.Intn(len(numbers))]
}
return string(b)
}
func main() {
fmt.Println(GenerateNumberString(2))
fmt.Println(GenerateNumberString(3))
fmt.Println(GenerateNumberString(4))
}
在去操场上here试试。