您好,登录后才能下订单哦!
本篇内容介绍了“Go语言标准库math和rand的常用函数有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
math 标准库提供了一些 常量如 int64 类型的最大值、float64 类型的最大值等,和常用的数学计算函数。
常用函数
| 函数 | 说明 |
|---|---|
| Abs(x float64) float64 | 传入 x 参数,返回 x 的绝对值 |
| Max(x, y float64) float64 | 传入 x、y 参数,返回 x 与 y 中的最大值 |
| Min(x, y float64) float64 | 传入 x、y 参数,返回 x 和 y 中的最小值 |
| Ceil(x float64) float64 | 传入 x 参数,返回一个大于等于 x 的最小整数值,也就是向上取整 |
| Ceil(x float64) float64 | 传入 x 参数,返回一个小于等于 x 的最小整数值,也就是向下取整 |
| Trunc(x float64) float64 | 传入 x 参数,返回浮点数 x 的整数部分,使用 Floor 函数也能实现 |
| Dim(x, y float64) float64 | 传入 x、y 参数,返回 x-y 与 0 中最大的值 |
| Mod(x, y float64) float64 | 对 x / y 进行取余运算 x % y |
| Pow(x, y float64) float64 | 计算 x 的 y 次幂 |
| Sqrt(x float64) float64 | 对 x 开平方 |
| Cbrt(x float64) float64 | 对 x 开立方 |
| Modf(f float64) (int float64, frac float64) | 分别取出 f 的整数部分和小数部分 |
如果想了解更多函数介绍和使用,可以到 pkg.go.dev/math 进行查看。
Abs(x float64) float64:返回 x 的绝对值。 示例:
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Abs(-3.14)) // 3.14
}Max(x, y float64) float64:返回 x 与 y 中的最大值。 示例:
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Max(1.5, 2.5)) // 2.5
}Min(x, y float64) float64:返回 x 和 y 中的最小值。 示例:
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Min(1.5, 2.5)) // 1.5
}Ceil(x float64) float64:返回一个大于等于 x 的最小整数值,也就是向上取整。 示例:
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Ceil(1.4)) // 2
fmt.Println(math.Ceil(2)) // 2
}Ceil(x float64) float64:返回一个小于等于 x 的最小整数值,也就是向下取整。 示例:
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Floor(1.4)) // 1
fmt.Println(math.Floor(1)) // 1
}Trunc(x float64) float64:返回浮点数 x 的整数部分,使用 Floor 函数也能实现。 示例:
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Trunc(1.4)) // 1
}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(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(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(x float64) float64:对 x 开平方。 示例:
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Sqrt(64)) // 8
fmt.Println(math.Sqrt(16)) // 4
}Cbrt(x float64) float64:对 x 开立方。 示例:
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Cbrt(64)) // 4
fmt.Println(math.Cbrt(8)) // 2
}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 标准库提供了多个获取不同类型随机数的函数。
常用函数
| 函数 | 说明 |
|---|---|
| Int() int | 返回一个 int 类型的非负的伪随机数 |
| Intn(n int) int | 返回一个 0 到 n 中(不包括 n)的 int 类型的非负伪随机数 |
| Int31() int32 | 返回一个 int32 类型的非负的伪随机数 |
| Uint32() uint32 | 返回一个 uint32 类型的非负的伪随机数 |
| Int31n(n int32) int32 | 返回一个 0 到 n 中(不包括 n)的 int32 类型的非负伪随机数 |
| Int63() int64 | 返回一个 int64 类型的非负的伪随机数 |
| Uint64() uint64 | 返回一个 uint64 类型的非负的伪随机数 |
| Int63n(n int64) int64 | 返回一个 0 到 n 中(不包括 n)的 int64 类型的非负伪随机数 |
| Float32() float32 | 返回一个 0.0 到 1.0 中(不包括 1.0)的 float32 类型的非负伪随机数 |
| Float64() float64 | 返回一个 0.0 到 1.0 中(不包括 1.0)的 float64 类型的非负伪随机数 |
| Seed(seed int64) | 设置随机种子,使得每次获取随机数的值都不一样 |
如果想了解更多函数介绍和使用,可以到 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 函数设置随机种子,将当前时间的秒数作为参数。后续多次获取随机数的值将不会一直一样。
“Go语言标准库math和rand的常用函数有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。