四时宝库

程序员的知识宝库

golang 生成随机数和字符串(golang字符串转数组)

随机数(伪随机)

package main
import (
    "fmt"
    "math/rand"
    "time"
)
func RandInt(min, max int) int {
    if min >= max || min == 0 || max == 0 {
        return max
    }
    return rand.Intn(max-min) + min
}
func main() {
    //此程序的运行环境是固定的,因此 rand.Intn 总是会返回相同的数字。(要得到不同的数字,需为生成器提供不同的种子数)
    //rand.Seed(time.Now().UnixNano())
    rand.Seed(time.Now().Unix()) //种子生成器
    fmt.Println(RandInt(100, 300))
}

随机字符串

package main
import (
"fmt"
"math/rand"
)
var defaultLetters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
// RandomString returns a random string with a fixed length
func RandomString(n int, allowedChars ...[]rune) string {
    var letters []rune
    if len(allowedChars) == 0 {
        letters = defaultLetters
    } else {
        letters = allowedChars[0]
    }
    b := make([]rune, n)
    for i := range b {
        b[i] = letters[rand.Intn(len(letters))]
    }
    return string(b)
}
func main() {
    fmt.Println(RandomString(16, defaultLetters))
}

随机字符串

package main

import (
    "fmt"
    "math/rand"
    "time"
)


func main() {

    str := RandString(16)
    fmt.Printf("随机字符串: %#v \n", str)
}


func RandString(lenNum int) string {
    var chars = []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"}
    str := ""
    length := len(chars)
    rand.Seed(time.Now().UnixNano())//重新播种,否则值不会变
    for i := 0; i < lenNum; i++ {
        str += chars[rand.Intn(length)]
    }
    return str
}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接