📅  最后修改于: 2023-12-03 15:08:37.262000             🧑  作者: Mango
在 Golang 中,获取一个 Float32 类型的随机数可以使用 math/rand
和 time
包。
首先,我们需要使用 time.Now()
函数获取一个随机的种子。然后,我们将这个种子传递给 rand.New()
函数,生成一个新的伪随机数生成器。
接着,我们可以使用这个伪随机数生成器的 Float32()
函数来获取一个 Float32 类型的随机数。
下面是一个示例代码片段:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 获取当前时间的纳秒数,作为随机种子
seed := time.Now().UnixNano()
// 生成一个新的伪随机数生成器
r := rand.New(rand.NewSource(seed))
// 获取一个 Float32 类型的随机数
randFloat := r.Float32()
fmt.Println(randFloat)
}
输出结果类似于:
0.8874986
本代码片段中,我们使用 time.Now().UnixNano()
函数获取当前时间的纳秒数,作为伪随机数生成器的种子。这样,每次运行程序都会生成不同的随机数。
然后,我们使用 rand.NewSource()
函数根据种子生成一个新的伪随机数生成器,再使用 rand.New()
函数创建该生成器的副本。这样,我们就可以在程序中使用该副本生成随机数,而不会影响原来的伪随机数生成器。
最后,我们使用 r.Float32()
函数获取一个 Float32 类型的随机数。
值得注意的是,math/rand
包默认使用的是线性同余算法生成伪随机数。虽然该算法的运算速度较快,但生成的随机数并不是真正的随机数,可能会存在一定的重复性。如果需要更安全的随机数生成方式,可以考虑使用 crypto/rand
包。