开发者

一文带你了解Go语言标准库math和rand的常用函数

开发者 https://www.devze.com 2022-12-18 10:33 出处:网络 作者: 陈明勇
目录math 标准库Abs 函数Max 函数Min 函数CeilFloor 函数Trunc 函数Dim 函数Mod 函数Pow 函数Sqrt 函数Cbrt 函数Modf 函数rand代码示例小结math 标准库
目录
  • math 标准库
    • Abs 函数
    • Max 函数
    • Min 函数
    • Ceil
    • Floor 函数
    • Trunc 函数
    • Dim 函数
    • Mod 函数
    • Pow 函数
    • Sqrt 函数
    • Cbrt 函数
    • Modf 函数
  • rand
    • 代码示例
  • 小结

    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"
    )MVuQPdvoXH
    
    func main() {
        fmt.Println(math.Abs(-3.14)) // 3.14
    }

    Max 函数

    Max(x, y float64) float64:返回 xy 中的最大值。 示例:

    import (
        "fmt"
        "math"
    )
    
    func main() {
        fmt.Println(math.Max(1.5, 2.5)) // 2.5
    }

    Min 函数

    Min(x, y float64) float64:返回 xy 中的最小值。 示例:

    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"
        "matphph"
    )
    
    func main() {
        fmt.Println(math.Trunc(1.4)) // 1
    }

    Dim 函数

    Dim(x, y float64) float64:返回 x-y0 中最大的值。 示例:

    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:计算 xy 次幂。 示例:

    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.Sqjsrt(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() {
        integeandroidr, decimal := math.Modf(3.1415)
        fmt.Printf("整数部分:%.f 小数部分:%.4f", integer, decimal) // 整数部分:3 小数部分:0.1415
    }

    rand

    rand 标准库提供了多个获取不同javascript类型随机数的函数。

    常用函数

    函数说明
    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 类型的非负的伪随机数
    Int开发者_Python教程63n(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 函数设置随机种子,将当前时间的秒数作为参数。后续多次获取随机数的值将不会一直一样。

    小结

    本文介绍了标准库 mathrand 的常用函数的用法,并通过例子进行说明。

    math 库里虽说有最大值和最小值比较,但是形参类型必须是浮点型,如果我们想比较的是整型的最大最小值,就得自己封装函数。

    获取随机数时,不要忘记设置随机种子,否则多次获取到的随机数将会是一样的。

    以上就是一文带你了解Go语言标准库math和rand的常用函数的详细内容,更多关于Go语言math rand的资料请关注我们其它相关文章!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消