以下是详细讲解“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技术站