生成邀请码的字符串号

时间:2018-12-03 12:17:42

标签: go

我想为邀请码生成号码。

我得到一个数字,我需要根据这个数字生成一个字符串。

示例: 对于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))
    }

致谢

1 个答案:

答案 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试试。