Golang生成指定范围内的随机数
1. 介绍
"math/rand"
go语言标准库中内置了处理随机数的方法,位于math包下,程序中通过引入math/rand包,即可调用相应方法生成随机数。 但是标准库中未提供可以生成指定范围的随机数,不过我们通过在原有方法上进行改造,即可实现此功能。
2. 实现
假设现在有这样一个需求,在服务器上创建一个服务需要为其分配相应的端口号,已知目前5000到10000端口未被占用。我们需要生成5000到10000的随机端口号,分配给服务。
首先,我们需要一个随机种子来为生成随机数做准备,可以调用Seed()函数实现, Seed()函数接收一个int64的整型。
rand.Seed(seed int64)
然后,调用生成随机数的方法Int31n(), Int31n()函数接收一个int32类型的数字n, 生成0~n的int32类型的随机数,并将其返回。其余类似Int63n()函数,同理。
rand.Int31(n int32) int32
完整代码
import ( "fmt" "math/rand" "time" ) func main() { //创建随机种子 rand.Seed(time.Now().Unix()) //生成5000到10000之间的int32类型随机数 //参数10000减5000保证函数生成的随机数在0到5000区间, //生成的随机数再加5000则落在5000到10000区间 var port int32 port = rand.Int31n(10000 - 5000) + 5000 fmt.Printf("随机数: %v ", port) }