一文带你了解Go语言标准库math和rand的常用函数
作者:陈明勇 发布时间:2024-02-22 07:24:24
math 标准库
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 函数
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
标准库提供了多个获取不同类型随机数的函数。
常用函数
函数 | 说明 |
---|---|
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
函数设置随机种子,将当前时间的秒数作为参数。后续多次获取随机数的值将不会一直一样。
小结
本文介绍了标准库 math
和 rand
的常用函数的用法,并通过例子进行说明。
math
库里虽说有最大值和最小值比较,但是形参类型必须是浮点型,如果我们想比较的是整型的最大最小值,就得自己封装函数。
获取随机数时,不要忘记设置随机种子,否则多次获取到的随机数将会是一样的。
来源:https://juejin.cn/post/7177775332194254885


猜你喜欢
- meta是html语言head区的一个辅助性标签。几乎所有的网页里,我们可以看到类似下面这段的html代码:<head> <meta&nbs
- 生活中我们为了保障房间里物品的安全,所以给门进行上锁,在我们需要进入房间的时候又会重新打开。同样的之间我们讲过多线程中的lock,作用是为了
- 最近对H1的讨论很多(在文章内容页中),大致有以下两种情况:H1应该用于文章的标题上H1应该用于站点的标题上相信大多数人都偏向第一种方式:用
- 代码如下:Dim strName, iLoop For Each strName 
- 本文实例为大家分享了vue自定义过滤器创建和使用方法,供大家参考,具体内容如下过滤器:生活中有很多例子,净水器 空气净化器 。过滤器的作用:
- 一、需求描述1.图片展示从如图所示的数据中提取含有"python"、"ubuntu"关键词的所有行数
- 随着MYSQL版本的更新以及电脑系统的变化,我们给大家整理了各种电脑环境下安装MYSQL的图解过程,希望我们整理的内容能够帮助到大家:mys
- 学了一个礼拜Python之后写的,代码很粗糙,只是为了完成利用163邮箱远程关电脑功能。直接把代码发上来吧。要执行的话得先安装一些模块,看i
- 一、功能这里的需求是,判断摄像头有没有被物体遮挡。这里只考虑用手遮挡---->判断黑色颜色的范围。二、使用OpenCV的Mat格式图片
- 本文实例讲述了Python3实现将文件归档到zip文件及从zip文件中读取数据的方法。分享给大家供大家参考。具体实现方法如下:'
- 在使用python做爬虫的过程中,有些页面的的部分数据是通过js异步加载的,js调用接口的请求中有时还带有些加密的参数很难破解无法使用req
- 本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下:使用Protocol Buffers的跨平台RPC系统。安装使用 p
- 能评估使用方法性能评估模块提供了一系列用于模型性能评估的函数,这些函数在模型编译时由metrics关键字设置性能评估函数类似与目标函数, 只
- 为了安全起见,需要经常对数据库作备份,或者还原。对于 MySQL 而言,最方便的方法可能就是用 phpMyAdmin 的导出、导入功能了,但
- 拼音类文件py_class.php源码如下:<?php class py_class{ function py_class(){
- 滑动窗口算法是一种可以高效解决数组问题的算法。它通过维护一个固定大小的滑动窗口,来快速计算某些数组的相关指标或者求解一些特定的问题。这种算法
- Scrapy中Spider的用法Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中
- 最近在做一个小案例的时候遇到了Math.max.apply这么一个用法,之前很少遇到过感觉挺有趣的,就记录一下。1Math.max语法: M
- HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容
- 一个ASPJPEG组件综合操作的asp类CLASS相关文章:ASP怎么谈到应用到类的?ASP中类的详细介绍(class Property G