使用rand包在Golang中展示随机数
在Golang中,使用rand包生成随机数/字符。首先,使用当前时间种子获取每次操作的不同随机输出。
语法
rand.Seed(value)
Rand.Seed() 函数用于生成随机数。它将用户的上限作为参数,用于生成随机数。
func Now() Time
Now() 函数在time包中定义。此函数生成当前本地时间。为了使用这个函数,我们需要先在程序中导入time包。
func (t Time) UnixNano() int64
UnixNano() 函数在time包中定义。该函数用于获取从UTC 1970年1月1日起经过的秒数。它返回的最终结果是64位整数类型。
rand.Intn(n)
Intn() 函数在math/rand包中定义。它用于在[0,n]区间中生成随机数,其中n是用户提供的数字。如果提供的数字小于0,则函数会抛出一个错误。
func Strings(src []string) []string
strings 函数在sort包中定义。该函数以字符串格式输入我们想要排序的数组,并通过排序该数组返回结果。
func make ([] type, size, capacity)
make 函数在go语言中用于创建数组/映射,它接受要创建的变量类型、大小和容量作为参数。
func range(variable)
range 函数用于迭代任何数据类型。为了使用它,我们首先要写出range关键字,然后是我们想要迭代的数据类型,结果是循环遍历变量的最后一个元素。
算法
- 步骤1 − 在程序中导入所需的包
-
步骤2 − 创建一个主函数
-
步骤3 − 在主函数中使用当前时间设定随机数生成器,以获得每次不同的输出
-
步骤4 − 使用rand包中的函数执行不同的操作
-
步骤5 − 使用fmt包中的Println函数将结果打印到控制台上
示例1
在此示例中,随机数生成器将使用当前时间进行种子处理,以获取新的随机数。随后,将生成随机整数和浮点数,最后打印随机排列。
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
random_integer := rand.Intn(50)
fmt.Println("Random integer:", random_integer)
random_floatnum := rand.Float64()
fmt.Println("Random float:", random_floatnum)
random_permutation := rand.Perm(20)
fmt.Println("Random permutation:", random_permutation)
}
输出
Random integer: 0
Random float: 0.5038452930984003
Random permutation: [2 3 1 6 8 16 17 12 7 10 13 11 4 5 18 14 9 0 19 15]
示例2
在此示例中,将进行种子处理,然后使用make函数创建名为password_value的变量,它是Golang中用于保存从字符集生成的随机密码的内置函数。
package main
import (
"fmt"
"math/rand"
"time"
)
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
func main() {
rand.Seed(time.Now().UnixNano())
password_value := make([]byte, 6)
for i := range password_value {
password_value[i] = charset[rand.Intn(len(charset))]
}
fmt.Println("随机密码:", string(password_value))
}
输出
随机密码:2sdGzJ
结论
我们编译和执行了 rand 包的两个例子。在第一个例子中,我们通过生成随机整数、浮点数和排列来执行不同的操作。在第二个例子中,生成了一个随机密码以展示 rand 包的使用。两个例子都提供了期望的随机输出。