go语言rand包实现了伪随机数生成器。
导入包:
import "math/rand"
获取随机数的例子:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 使用当前的纳秒作为随机数种子
rand.Seed(time.Now().UnixNano())
// 返回大于等于0且小于100的随机数
fmt.Println(rand.Intn(100))
}
注意: 上面的例子,使用默认的随机数生成器,生成随机数;在并发高的时候会因为加锁问题,并发性能不高,为避免加锁问题,可以分别为协程新建单独的随机数生成器,避开加锁问题。
使用随机数生成器,生成随机数的例子:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 使用当前的纳秒作为随机数种子, 创建一个随机数生成器
rnd := rand.New(rand.NewSource(time.Now().UnixNano()))
// 返回大于等于0且小于100的随机数
fmt.Println(rnd.Intn(100))
}