发布时间:2024-11-22 00:32:15
```go package main import ( "fmt" "math/rand" "time" ) func main() { rand.Seed(time.Now().UnixNano()) num := rand.Intn(100) fmt.Println(num) } ```
在上面的代码中,我们首先使用time包来获取当前时间的纳秒数,并将其作为随机数生成器的种子。接着,使用rand包中的Intn函数来生成一个范围在0到99之间的随机整数,并将其打印出来。```go package main import ( "fmt" "math/rand" "time" ) func generateRandomString(length int) string { rand.Seed(time.Now().UnixNano()) const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" b := make([]byte, length) for i := range b { b[i] = charset[rand.Intn(len(charset))] } return string(b) } func main() { randomString := generateRandomString(10) fmt.Println(randomString) } ```
在上面的代码中,我们定义了一个函数generateRandomString,它接受一个参数length表示要生成的随机字符串的长度。我们首先设置随机数生成器的种子,然后定义了一个包含所有可能字符的字符串charset。接着,我们使用rand包中的Intn函数来获取charset字符串中的随机字符,并将其放入一个字节切片b中。最后,将字节切片转换为字符串并返回。```go package main import ( "fmt" "math/rand" "time" ) func shuffle(s []int) { rand.Seed(time.Now().UnixNano()) for i := len(s) - 1; i > 0; i-- { j := rand.Intn(i + 1) s[i], s[j] = s[j], s[i] } } func main() { nums := []int{1, 2, 3, 4, 5} fmt.Println("Before shuffle:", nums) shuffle(nums) fmt.Println("After shuffle:", nums) } ```
在上面的代码中,我们定义了一个函数shuffle,它接受一个整数切片作为参数,并使用rand包中的Intn函数生成一个随机索引,将切片中的两个元素进行交换,从而实现了对切片的随机打乱。在main函数中,我们定义了一个整数切片nums,并通过调用shuffle函数来打乱该切片的顺序。