来源:https://github.com/xg-wang/gobyexample/tree/master/examples
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
//`rand.Intn`返回一个随机的整数 n,`0 <= n <= 100`
fmt.Print(rand.Intn(100), ",")
fmt.Print(rand.Intn(100))
fmt.Println()
//`rand.Float64` 返回一个64位浮点数`f`
//`0.0 <= f <= 1.0`
fmt.Println(rand.Float64())
//这个技巧可以用来生成其他范围的随机浮点数,例如
//`5.0 <= f <= 10.0`
fmt.Print((rand.Float64()*5)+5, ",")
fmt.Print((rand.Float64() * 5) + 5)
fmt.Println()
//默认情况下,给定的种子是确定的,每次都会产生相同的随机数字序列。要产生变化的序列
//需要给定一个变化的种子。
//需要注意的是,如果你出于加密的目的,需要使用随机数的话,请使用`crypto/rand`包
s1 := rand.NewSource(time.Now().UnixNano())
r1 := rand.New(s1)
//调用上面返回的`rand.Source`的函数和调用`rand`包中的函数是相同的
fmt.Print(r1.Intn(100), ",")
fmt.Print(r1.Intn(100))
fmt.Println()
//如果使用相同的种子生成的随机数生成器,将会产生相同的随机数序列
s2 := rand.NewSource(42)
r2 := rand.New(s2)
fmt.Print(r2.Intn(100), ",")
fmt.Print(r2.Intn(100))
fmt.Println()
s3 := rand.NewSource(42)
r3 := rand.New(s3)
fmt.Print(r3.Intn(100), ",")
fmt.Print(r3.Intn(100))
}
输出结果:
81,87
0.6645600532184904
7.1885709359349015,7.123187485356329
39,53
5,87
5,87