golang随机数生成方法

使用rand包

1
2
3
4
5
6
7
8
9
10
package main
import (
"fmt"
"math/rand"
)
func main() {
for i := 0; i < 10; i++ {
fmt.Println(rand.Intn(100)) //返回[0,100)的随机整数
}
}

这样使用是可以产生随机数,但是程序重启后,产生的随机数和上次一样。是因为程序使用了相同的种子 1。可以使用rand.Seed(seed)来设置一个不同的种子值。

1
2
3
4
5
6
7
8
9
10
11
12
13
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano()) //利用当前时间的UNIX时间戳初始化rand包
for i := 0; i < 10; i++ {
x := rand.Intn(100)
fmt.Println(x)
}
}

产生指定数字范围内的随机数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
for i := 0; i < 10; i++ {
x := randInt(100,999)
fmt.Println(x)
}
}

func randInt(min int , max int) int {
rand.Seed(time.Now().UnixNano())
return min + rand.Intn(max-min)
}