Go获取随机值
在编程中,有时我们需要生成随机数或随机字符串来模拟数据,或者用于密码生成,验证码等场景。在Go语言中,我们可以使用内置的math/rand
包和crypto/rand
包来获取随机值。
使用math/rand包获取随机值
math/rand
包提供了伪随机数生成器,可以生成伪随机数。下面是一个使用math/rand
包生成随机整数的示例代码:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano()) // 设置种子,使每次运行的输出结果不同
randomInt := rand.Intn(100) // 生成一个0到99之间的随机整数
fmt.Println("Random Int:", randomInt)
}
运行上面的代码,会输出一个0到99之间的随机整数,例如:
Random Int: 42
除了生成随机整数外,我们还可以使用math/rand
包生成随机浮点数,例如:
randomFloat := rand.Float64() // 生成一个0.0到1.0之间的随机浮点数
fmt.Println("Random Float:", randomFloat)
使用crypto/rand包获取随机值
除了math/rand
包生成伪随机数外,crypto/rand
包提供了真正的随机数生成器,可以生成高质量的随机数。下面是一个使用crypto/rand
包生成随机字节序列的示例代码:
package main
import (
"crypto/rand"
"fmt"
)
func main() {
randomBytes := make([]byte, 8)
_, err := rand.Read(randomBytes)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Random Bytes:", randomBytes)
}
运行上面的代码,会输出一个8字节长度的随机字节序列,例如:
Random Bytes: [73 247 229 76 93 158 251 229]
结语
通过math/rand
包和crypto/rand
包,我们可以方便地在Go语言中生成随机值。在实际应用中,根据不同的场景选择合适的方式来获取随机值,以确保安全性和性能。