go语言同一纳秒生成不同随机数
时间: 2023-07-07 14:03:48 浏览: 59
在Go语言中生成随机数可以使用标准库中的`math/rand`包,其中的`Intn()`函数可以生成一个0到n-1之间的随机整数。如果你想在同一纳秒内生成不同的随机数,可以使用随机种子(seed)来保证每次生成的随机数是不同的。
例如,可以使用当前时间的纳秒数作为随机种子:
```go
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 使用当前时间的纳秒数作为随机种子
rand.Seed(time.Now().UnixNano())
for i := 0; i < 5; i++ {
fmt.Println(rand.Intn(100))
}
}
```
这样每次运行程序时,都会生成不同的随机数序列。
相关问题
go语言生成随机数,保证每一纳秒都不会有相同的随机数
在 Go 语言中,可以使用 `math/rand` 包生成随机数。为了保证每一纳秒都不会有相同的随机数,可以结合当前时间作为随机数种子。具体实现如下:
```go
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 以当前时间作为随机数种子
rand.Seed(time.Now().UnixNano())
// 生成随机数
for i := 0; i < 10; i++ {
fmt.Println(rand.Intn(100))
time.Sleep(1 * time.Nanosecond)
}
}
```
在上面的代码中,我们使用 `time.Now().UnixNano()` 获取当前时间的纳秒数,并将其作为随机数种子,然后使用 `rand.Intn()` 生成随机数。为了保证每一纳秒都不会有相同的随机数,我们在生成每个随机数之间加入了一纳秒的延迟。
go 语言 生成随机数
在 Go 语言中,可以使用 `math/rand` 包中的 `Intn` 函数来生成指定范围内的随机整数。示例如下:
```go
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 设置随机数种子
rand.Seed(time.Now().UnixNano())
// 生成 0~99 之间的随机整数
randomNum := rand.Intn(100)
fmt.Println(randomNum)
}
```
需要注意的是,为了避免每次生成的随机数都相同,需要先调用 `rand.Seed` 函数设置随机数种子。可以使用 `time.Now().UnixNano()` 函数获取当前时间的纳秒数作为种子。