Golang中数学计算与随机数生成模块的使用
在Golang中,数学计算和随机数生成是常见的需求。Go语言标准库为我们提供了相应的包来处理这些任务,分别是math
和math/rand
包。以下是这些模块使用的基本方法:
数学计算 (math
包)
math
包提供了基本的数学常量和函数,例如三角函数、对数函数、幂函数等。
常用函数:
math.Abs(x float64) float64
: 返回x的绝对值。math.Pow(x, y float64) float64
: 返回x的y次幂。math.Sqrt(x float64) float64
: 返回x的平方根。math.Sin(x float64) float64
,math.Cos(x float64) float64
,math.Tan(x float64) float64
: 分别返回正弦、余弦和正切值。math.Log(x float64) float64
,math.Log10(x float64) float64
: 返回自然对数和以10为底的对数。
使用示例:
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println("Abs(-5):", math.Abs(-5))
fmt.Println("Pow(2, 3):", math.Pow(2, 3))
fmt.Println("Sqrt(16):", math.Sqrt(16))
fmt.Println("Sin(π/2):", math.Sin(math.Pi/2))
}
随机数生成 (math/rand
包)
math/rand
包主要用于生成伪随机数。需要注意的是,默认情况下,rand
包生成的是一种确定性的伪随机数序列,如果不设置种子,每次运行程序生成的随机数序列都是相同的。
设定随机数种子:
- 使用
rand.Seed(seed int64)
函数来设置种子。种子值一般用当前时间戳,以保证每次运行程序的种子不同,从而生成不同的随机序列。
import "time"
rand.Seed(time.Now().UnixNano())
- 使用
生成随机数:
rand.Intn(n int) int
: 返回介于[0, n)之间的随机整数。rand.Float64() float64
: 返回介于[0.0, 1.0)之间的随机浮点数。
使用示例:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
fmt.Println("Random integer (0-99):", rand.Intn(100))
fmt.Println("Random float (0.0-1.0):", rand.Float64())
}
需要注意的是,math/rand
包生成的是伪随机数序列,适用于一般用途。如果需要高质量的随机数(例如用于加密场景),应该使用crypto/rand
包。