golang学习笔记—rand

以下是详细讲解“golang学习笔记---rand”的完整攻略,过程中包含两个示例说明:

golang学习笔记---rand

在Go语言中,rand包提供了伪随机数生成器,可以用于生成随机数。本攻略将介绍rand包的基本概念、函数和两个示例说明。

基本概念

在开始使用rand包之前,我们需要了解一些基本概念:

  • 伪随机数:伪随数是一种看起来像随机数的数列,但是实际上是由一个确定的算法生成的。
  • 种子:种子是伪随机数生成器的起始值,可以用于控制随机数的生成。
  • 随机数生成器:随机数生成器是一种法,可以根据种子生成伪随机数。

函数

rand包提供了多个函数,可以用于生成随机数。以下是一些用的函数及其示例:

  • Intn(n int) int:生成一个小于n的非负整数。
import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    rand.Seed(time.Now().UnixNano())
    fmt.Println(rand.Intn(100))
}
  • Float64() float64:生成一个[0.0,1.0)之间的浮点数。
import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    rand.Seed(time.Now().UnixNano())
    fmt.Println(rand.Float64())
}
  • Perm(n int) []int:生成一个长度为n的随机排列。
import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    rand.Seed(time.Now().UnixNano())
    fmt.Println(rand.Perm(10))
}

示例一:生成随机数

以下是一个使用rand包生成随机数的示例:

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    rand.Seed(time.Now().UnixNano())
    fmt.Println(rand.Intn(100))
}

在上面的示例中,我们首先使用time.Now().UnixNano()获取当前时间的纳秒数,并使用rand.Seed()函数将其作为种子。然后,我们使用rand.Intn()函数生成一个小于100的随机数,并使用fmt.Println()函数输出结果。

示例二:生成随机字符串

以下是一个使用rand包生成随机字符串的示例:

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    rand.Seed(time.Now().UnixNano())

    const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    b := make([]byte, 10)
    for i := range b {
        b[i] = letterBytes[rand.Intn(len(letterBytes))]
    }
    fmt.Println(string(b))
}

在上面的示例中,我们首先使用time.Now().UnixNano()函数获取当前时间的纳秒数,并使用rand.Seed()函数将其作为种子。然后,我们定义了一个包含所有字母的字符串letterBytes,并使用rand.Intn()函数生成一个小于字符串长度的随机数。最后,我们使用for循环和[]byte类型的切片b生成一个长度为10的随机字符串,并使用fmt.Println()函数输出结果。

总结

以上是golang学习笔记---rand,包括基本概念、函数和两个示例说明。在使用rand包生成随机数时,应注意使用time.Now().UnixNano()函数获取当前时间的纳秒数作为种子,并根据需要使用不同的函数生成随机数。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:golang学习笔记—rand - Python技术站

(0)
上一篇 2023年5月10日
下一篇 2023年5月10日

相关文章

  • 浅谈PHP Extension的开发——基础篇第1/2页

    浅谈PHP Extension的开发——基础篇第1/2页 简介 本攻略将详细讲解如何开发PHP Extension,帮助读者了解PHP扩展的基础知识和开发流程。本文将分为两部分,第1/2页将介绍PHP Extension的概念和基本结构。 什么是PHP Extension PHP Extension是一种用C语言编写的动态链接库,可以扩展PHP的功能。通过开…

    other 2023年7月27日
    00
  • Vue-cli@3.0 插件系统简析

    Vue-cli@3.0 插件系统简析 Vue-cli@3.0是Vue.js官方提供的脚手架工具,能够帮助我们快速创建Vue.js项目,提供了丰富的配置选项和插件扩展能力。本文主要介绍Vue-cli@3.0的插件系统,让我们能够更好的了解和使用Vue-cli@3.0。 Vue-cli@3.0 插件系统简介 Vue-cli@3.0的插件系统是基于Plugin A…

    other 2023年6月27日
    00
  • Oracle Number型的深入理解

    Oracle Number类型的深入理解 什么是Oracle Number类型? Oracle Number类型是Oracle存储数字类型的一种,和其他数据库中的数字类型(比如MySQL的int)有所不同。Number类型是一种可变长度的数据类型,能处理极大或极小的数字,精度高达38位。 Oracle Number类型的数据存储 Oracle Number类…

    other 2023年6月26日
    00
  • cssfilter属性详解

    下面是关于“CSS filter属性详解”的完整攻略: 1. CSS filter属性说明 CSS filter属性是一个用于图像处理的CSS3属性,可以对元素的可视化效果进行处理。通过使用不同的镜函数,可以实现图像的模糊、颜色调整、亮度调整、对比度调整、灰度化等效果。 2. CSS filter属性语法 CSS filter属性的语法如下: filter:…

    other 2023年5月7日
    00
  • iOS从系统相册选取多张照片示例代码

    OK,以下是iOS从系统相册选取多张照片的完整攻略: 准备工作 在开始实现多选照片功能之前,我们需要在项目中导入Photo Library框架,同时在Info.plist文件中添加相册访问权限: 在项目设置中,进入Build Phases -> Link Binary With Libraries,点击右下角“+”按钮,选择Photos.framewo…

    other 2023年6月26日
    00
  • URL目录文件名优化过程中的14大技巧

    下面我将为您详细讲解“URL目录文件名优化过程中的14大技巧”的完整攻略。 1. 表示层URL与实际URL分开 将网站的URL分成两部分,表示层URL和实际URL。表示层URL用于展示和用户访问,实际URL则用于服务器访问和处理。 示例说明:例如,网站的表示层URL为:https://www.example.com/article/123,而实际URL为:h…

    other 2023年6月26日
    00
  • 华为nova5pro如何打开开发者选项?

    当用户要在华为nova5pro手机上进行一些高级功能或调试时,可以打开开发者选项进行设置。以下是详细的步骤: 首先,进入手机的“设置”菜单,然后向下滑动,找到“系统和更新”选项并点击。 在“系统和更新”界面中,继续向下滑动,找到“开发人员选项”选项并点击进入。 接着,在“开发人员选项”中,首先要打开开关,在开头切换为“开”。然后就可以根据需要进行相关设置了。…

    other 2023年6月26日
    00
  • matlab怎么恢复默认字体

    在MATLAB中,您可以通过以下步骤恢复默认字体: 步骤1:打开MATLAB 首先,您需要打开MATLAB软件。 步骤2:选择“主页”选项卡 然后,您需要选择“主页”选项卡。 步骤3:选择“默认”选项卡 接下来,您需要选择“默认”选项卡。 步骤4:选择“字体”选项卡 然后,您需要选择“字体”选项卡。 步骤5:选择“默认”字体 最后,您需要选择“默认”字体。 …

    other 2023年5月6日
    00
合作推广
合作推广
分享本页
返回顶部