math

 

2022-11-23

伪随机数生成

math/rand 实现

1
package main
2
3
import (
4
"fmt"
5
"time"
6
"math/rand"
7
)
8
func main() {
9
// 用 Unix时间生成纳秒时间戳
10
// 高并发情况下,可能会生成同样的时间戳
11
tineNano := time.Now().UnixNano()
12
// 使用时间戳生成 seed
13
rand.Seed(tineNano)
14
// 生成随机数
15
fmt.Println(rand.Intn(100))
16
}

真随机数生成

crypto/rand 实现

1
package main
2
3
import (
4
"fmt"
5
"crypto/rand"
6
)
7
8
func main() {
9
randomNum := rand.Int(rand.Reader, big.NewInt(100))
10
fmt.Println(randomNum)
11
}