【问题标题】:Generate string number for invitation code [duplicate]为邀请码生成字符串编号[重复]
【发布时间】:2019-05-04 17:53:10
【问题描述】:

我想生成邀请码号码。

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

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

问候

【问题讨论】:

  • 这是一个有约束的随机数......就像数字的数量......不是数组中的随机字符串......蚂蚁在第一篇文章中没有零。

标签: go


【解决方案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

【讨论】:

    猜你喜欢
    • 2012-09-04
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2017-12-19
    • 2013-08-29
    相关资源
    最近更新 更多