golang 随机数的两种方式
作者:@航空母舰 时间:2024-04-28 10:46:44
golang支持两种随机数生成方式:
math/rand // 伪随机
crypto/rand // 真随机
math/rand伪随机生成的数字是确定的,不论在什么机器、什么时间,只要执行的随机代码一样,那么生成的随机数就一样。为了尽量随机性,那么我们可以每次使用不同的seed来启动程序,就可以保证每次启动都产生新的随机数,聪明的你肯定想到了使用时间戳
func main() {
fmt.Println(rand.Intn(100))
//设置随机数种子,由于种子数值,每次启动都不一样
//所以每次随机数都是随机的
rand.Seed(time.Now().UnixNano())
//随机生成100以内的正整数
fmt.Println(rand.Intn(100))
}
crypto/rand 就是从这个地方读“真随机”数字返回,但性能比较慢。比上面慢10倍以上
package main
import (
"crypto/rand"
"encoding/binary"
"fmt"
"time"
)
func main() {
var n int32
binary.Read(rand.Reader, binary.LittleEndian, &n)
fmt.Println(n)
}
通用随机数算法
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
fmt.Println(randomString(6, 0))
}
/**
* size 随机码的位数
* kind 0 // 纯数字
1 // 小写字母
2 // 大写字母
3 // 数字、大小写字母
*/
func randomString(size int, kind int) string {
ikind, kinds, rsbytes := kind, [][]int{[]int{10, 48}, []int{26, 97}, []int{26, 65}}, make([]byte, size)
isAll := kind > 2 || kind < 0
rand.Seed(time.Now().UnixNano())
for i := 0; i < size; i++ {
if isAll { // random ikind
ikind = rand.Intn(3)
}
scope, base := kinds[ikind][0], kinds[ikind][1]
rsbytes[i] = uint8(base + rand.Intn(scope))
}
return string(rsbytes)
}
来源:https://blog.csdn.net/hudeyong926/article/details/124857119
标签:golang,随机数
0
投稿
猜你喜欢
微信小程序开发之数据存储 参数传递 数据缓存
2024-04-19 09:49:44
python为什么要安装到c盘
2023-01-04 13:23:00
js计算精度问题小结
2024-04-10 13:55:24
python中pip的安装与使用教程
2021-06-10 23:37:36
用Python实现服务器中只重载被修改的进程的方法
2022-06-21 05:11:38
详解Django 时间与时区设置问题
2021-02-19 03:08:42
ASP也使用ORM,给ASP上所有的SQL注入画上句号
2011-04-03 11:02:00
一文搞懂Python中subprocess模块的使用
2023-12-05 16:35:05
MySql多表查询 事务及DCL
2024-01-29 04:55:28
解决pycharm同一目录下无法import其他文件
2021-03-22 10:02:14
python实现字符串和日期相互转换的方法
2022-09-02 04:05:55
python 工具类之Queue组件详解用法
2023-08-05 23:59:10
10分钟用Python快速搭建全文搜索引擎详解流程
2023-11-06 16:13:41
让你的空间支持域名绑定子目录的解决办法
2010-09-15 10:03:00
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2022-03-26 10:52:57
详解Django中CSRF和CORS的区别
2021-02-19 19:16:51
小谈访客浏览器分辨率
2007-10-18 13:12:00
Python如何把多个PDF文件合并代码实例
2021-03-27 00:31:15
TensorFlow神经网络创建多层感知机MNIST数据集
2022-03-29 20:09:19
PHP制作图形验证码代码分享
2024-05-11 09:26:01