dstbtam8732
2017-08-21 07:49
浏览 491
已采纳

如何从golang的数组中提取字符?

need to extract the random characters from string

here is what i got:

const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  b := make([]byte, 1)
for i := range b {
    b[i] = letterBytes[rand.Intn(len(letterBytes))]
}
fmt.Println(string(b))

but it always returns "X" but, i need to return every time new character using rand function. any help would be really appreciated. Thanks.

图片转代码服务由CSDN问答提供 功能建议

需要从字符串中提取随机字符

这是我得到的 :

  const letterBytes =“ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ” 
b:= make([] byte,1)
for i:=范围b {
b [i] = letterBytes [rand  .Intn(len(letterBytes))
} 
fmt.Println(string(b))
   
 
 

,但它始终返回“ X” 但是,我 需要每次使用rand函数返回新字符。 any的帮助将不胜感激。 谢谢。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

  • duan7772 2017-08-21 08:12
    最佳回答

    Start by seeding the pseudorandom number generator. For example,

    package main
    
    import (
        "fmt"
        "math/rand"
        "time"
    )
    
    func main() {
        rand.Seed(time.Now().UnixNano())
        const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        b := make([]byte, 7)
        for i := range b {
            b[i] = letterBytes[rand.Intn(len(letterBytes))]
        }
        fmt.Println(string(b))
    }
    

    Output:

    jfXtySC
    

    The Go Playground

    About the Playground

    In the playground the time begins at 2009-11-10 23:00:00 UTC (determining the significance of this date is an exercise for the reader). This makes it easier to cache programs by giving them deterministic output.

    Therefore, in the Go playground, time.Now().UnixNano() always returns the same value. For a random seed value, run the code on your computer.


    For any Unicode code point (Go rune),

    package main
    
    import (
        "fmt"
        "math/rand"
        "time"
    )
    
    package main
    
    import (
        "fmt"
        "math/rand"
        "time"
    )
    
    func main() {
        rand.Seed(time.Now().UnixNano())
        chars := []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ世界!@=")
        r := make([]rune, 50)
        for i := range r {
            r[i] = chars[rand.Intn(len(chars))]
        }
        fmt.Println(string(r))
    }
    

    Output:

    世QRYSp=@giJMIKly=tXRefjtVkeE!yHhTSQHvLyUYdRNIBbILW
    
    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题