一文了解 Go 标准库 math 和 rand 的常用函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文了解 Go 标准库 math 和 rand 的常用函数相关的知识,希望对你有一定的参考价值。
耐心和持久胜过激烈和狂热。
哈喽大家好,我是陈明勇,今天分享的内容是在 Go 标准库 math 和 rand 的常用函数。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!
math 标准库
math
标准库提供了一些 常量如 int64
类型的最大值、float64
类型的最大值等,和常用的数学计算函数。
常用函数
函数 | 说明 |
| 传入 |
| 传入 |
| 传入 |
| 传入 |
| 传入 |
| 传入 |
| 传入 |
| 对 |
| 计算 |
| 对 |
| 对 |
| 分别取出 |
如果想了解更多函数介绍和使用,可以到 https://pkg.go.dev/math 进行查看。
Abs 函数
Abs(x float64) float64
:返回 x
的绝对值。
示例:
import (
"fmt"
"math"
)
func main()
fmt.Println(math.Abs(-3.14)) // 3.14
Max 函数
Max(x, y float64) float64
:返回 x
与 y
中的最大值。
示例:
import (
"fmt"
"math"
)
func main()
fmt.Println(math.Max(1.5, 2.5)) // 2.5
Min 函数
Min(x, y float64) float64
:返回 x
和 y
中的最小值。
示例:
import (
"fmt"
"math"
)
func main()
fmt.Println(math.Min(1.5, 2.5)) // 1.5
Ceil
Ceil(x float64) float64
:返回一个大于等于 x
的最小整数值,也就是向上取整。
示例:
import (
"fmt"
"math"
)
func main()
fmt.Println(math.Ceil(1.4)) // 2
fmt.Println(math.Ceil(2)) // 2
Floor 函数
Ceil(x float64) float64
:返回一个小于等于 x
的最小整数值,也就是向下取整。
示例:
import (
"fmt"
"math"
)
func main()
fmt.Println(math.Floor(1.4)) // 1
fmt.Println(math.Floor(1)) // 1
Trunc 函数
Trunc(x float64) float64
:返回浮点数 x
的整数部分,使用 Floor
函数也能实现。
示例:
import (
"fmt"
"math"
)
func main()
fmt.Println(math.Trunc(1.4)) // 1
Dim 函数
Dim(x, y float64) float64
:返回 x-y
与 0
中最大的值。
示例:
import (
"fmt"
"math"
)
func main()
fmt.Println(math.Dim(2.0, 1.0)) // 1
fmt.Println(math.Dim(1.0, 2.0)) // 0
Mod 函数
Mod(x, y float64) float64
:对 x / y
进行取余运算 x % y
。
示例:
import (
"fmt"
"math"
)
func main()
fmt.Println(math.Mod(5.0, 3.0)) // 3
fmt.Println(math.Mod(3.0, 3.0)) // 0
Pow 函数
Pow(x, y float64) float64
:计算 x
的 y
次幂。
示例:
import (
"fmt"
"math"
)
func main()
fmt.Println(math.Pow(2, 1)) // 2
fmt.Println(math.Pow(2, 5)) // 32
Sqrt 函数
Sqrt(x float64) float64
:对 x
开平方。
示例:
import (
"fmt"
"math"
)
func main()
fmt.Println(math.Sqrt(64)) // 8
fmt.Println(math.Sqrt(16)) // 4
Cbrt 函数
Cbrt(x float64) float64
:对 x
开立方。
示例:
import (
"fmt"
"math"
)
func main()
fmt.Println(math.Cbrt(64)) // 4
fmt.Println(math.Cbrt(8)) // 2
Modf 函数
Modf(f float64) (int float64, frac float64)
:分别取出 f
的整数部分和小数部分。
-
int
参数,整数部分。 -
frac
参数,小数部分。
示例:
import (
"fmt"
"math"
)
func main()
integer, decimal := math.Modf(3.1415)
fmt.Printf("整数部分:%.f 小数部分:%.4f", integer, decimal) // 整数部分:3 小数部分:0.1415
rand
rand
标准库提供了多个获取不同类型随机数的函数。
常用函数
函数 | 说明 |
| 返回一个 |
| 返回一个 |
| 返回一个 |
| 返回一个 |
| 返回一个 |
| 返回一个 |
| 返回一个 |
| 返回一个 |
| 返回一个 |
| 返回一个 |
| 设置随机种子,使得每次获取随机数的值都不一样 |
如果想了解更多函数介绍和使用,可以到 https://pkg.go.dev/math/rand 进行查看。
代码示例
import (
"fmt"
"math/rand"
)
func main()
fmt.Println(rand.Int()) // 5577006791947779410
fmt.Println(rand.Intn(10)) // 7
fmt.Println(rand.Int31()) // 1427131847
fmt.Println(rand.Uint32()) // 1879968118
fmt.Println(rand.Int31n(10)) // 1
fmt.Println(rand.Int63()) // 6334824724549167320
fmt.Println(rand.Uint64()) // 9828766684487745566
fmt.Println(rand.Int63n(10)) // 8
fmt.Println(rand.Float32()) // 0.09696952
fmt.Println(rand.Float64()) // 0.30091186058528707
多次运行上述代码,发现获取到的随机数都是一样的,这是因为我们没有设置随机种子。可以通过 Seed
函数进行设置:
import (
"fmt"
"math/rand"
"time"
)
func main()
rand.Seed(time.Now().Unix())
fmt.Println(rand.Intn(10))
使用 Seed
函数设置随机种子,将当前时间的秒数作为参数。后续多次获取随机数的值将不会一直一样。
小结
本文介绍了标准库 math
和 rand
的常用函数的用法,并通过例子进行说明。
math
库里虽说有最大值和最小值比较,但是形参类型必须是浮点型,如果我们想比较的是整型的最大最小值,就得自己封装函数。
获取随机数时,不要忘记设置随机种子,否则多次获取到的随机数将会是一样的。
以上是关于一文了解 Go 标准库 math 和 rand 的常用函数的主要内容,如果未能解决你的问题,请参考以下文章