贝利信息

如何在Golang中使用math/rand生成随机数_创建随机数据

日期:2025-12-30 00:00 / 作者:P粉602998670
在 Go 中需初始化随机源避免重复序列,Go 1.20 前用 rand.Seed(time.Now().UnixNano()),之后推荐 r := rand.New(rand.NewSource(time.Now().UnixNano()));再用 r.Intn(100)+1、r.Float64()*5.0、r.Intn(2)==0 分别生成 1–100 整数、0.0–5.0 浮点数和布尔值。

在 Go 中使用 math/rand 生成随机数,关键在于正确初始化随机数生成器(避免重复种子),并根据需求选择合适的随机方法。默认的全局随机源是确定性的,不加初始化会导致每次运行结果相同。

初始化随机源(避免固定序列)

Go 的 rand 包默认使用固定种子(如 1),所以必须显式设置种子才能获得真正“随机”的效果。推荐用当前时间纳秒值作为种子:

生成常见类型的随机数

使用 rand.Intn(n) 获取 [0, n) 范围内的整数;用 rand.Float64() 得到 [0.0, 1.0) 的浮点数:

生成随机字符串或字节切片

结合 rand.Intn() 和字符集可构造随机字符串:

生成结构化随机数据(如用户、订单)

组合基础随机方法即可模拟真实数据:

不复杂但容易忽略——只要记得初始化种子、按需选方法、区分是否需要密码学安全,就能稳定生成符合预期的随机数据。