生成6位数代码的电话验证,下面是一个非常简单的方法,我用过
package main
import (
"fmt"
"math/rand"
"time"
)
var randowCodes = [...]byte{
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
}
func main() {
var r *rand.Rand = rand.New(rand.NewSource(time.Now().UnixNano()))
for i := 0; i < 3; i++ {
var pwd []byte = make([]byte, 6)
for j := 0; j < 6; j++ {
index := r.Int() % len(randowCodes)
pwd[j] = randowCodes[index]
}
fmt.Printf("%s\n", string(pwd))
}
}
你有更好的办法吗?
6条答案
按热度按时间zsbz8rwp1#
您可以使用"crypto/rand"软件包:其实现加密安全的伪随机数发生器。(在The Go Playground上尝试):
输出:
请参见:How to generate a random string of a fixed length in golang?
jm2pwxwz2#
我已经派生了user6169399的答案,使用带有常量字符串和小修改的
crypto/rand
,结果如下:62o28rlo3#
我认为这是最简单的方法:
输出:
功能用途:
输出:
jobtbby34#
您还可以使用
crypto/rand
中的rand.Int()
来生成随机性jxct1oxe5#
1.使用数学/兰德数:
1.使用加密/兰德(更安全):
h7appiyu6#
我需要一个更简单、更扁平的解决方案,所以我想出了这个
旁注:
rand.Intn(900000)
不会生成900000
,最大数量为899999
,因此代码不会生成1,000,000