Go 生成指定位数的随机数/随机字符串

生成指定位数的随机数:

代码如下: 

package main
import (
   "fmt"
   "math/rand"
   )
func CreateCaptcha() string {
   return fmt.Sprintf("%06v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(1000000))
}
func main(){
   fmt.Println(CreateCaptcha())
}

Now() Time  获取当前时间,返回Time类型

输出:2019-09-03 20:58:38.473422 +0800 CST m=+0.000168620

Unix() int64  返回时间戳,自从1970年1月1号到现在

输出:1567515533

UnixNano() int64  返回时间戳.包含纳秒

输出:1567515575893470000

Int31n(1000000)  产生0到1000000之间的随机数,返回值为int32,该类函数还有Int63()等等,用来生成相应数据类型的随机数

NewSource返回一个以给定值播种的新随机源。

New返回一个新的Rand,它使用src(传入的参数)中的随机值生成其他随机值。

位数可以通过格式化输出进行调整,如把代码中的"%06v"改为"%08v"

生成随机字符串:

代码如下:

package problem

import (
	"math/rand"
	"time"
)

var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
var n = 12

func GenerateSubId() string {
	b := make([]rune, n)
	for i := range b {
		b[i] = letterRunes[rand.New(rand.NewSource(time.Now().UnixNano())).Intn(len(letterRunes))]
	}
	return string(b)
}

在slice的每个位置随机生成字符(大小写字母和数字)。

你可能感兴趣的:(Go)