【golang】随机数的简单使用

402 阅读1分钟

使用math/rand包来生成随机数,具体代码如下:

package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {
	var seedNum int64 = 666
	//创建随机数种子,种子的值决定了随机数的值,只要种子确定,那么随机数也是确定的。
	//rand.Intn(max)生成一个小于max的随机数
	fmt.Print("使用指定数字作为种子生成的随机数,种子是:", seedNum, ",生成的随机数是:")
	rand.Seed(seedNum)
	for i := 0; i < 5; i++ {
		fmt.Printf("%d ", rand.Intn(100))
	}
	fmt.Println()
	fmt.Print("第二次使用指定数字666作为种子生成的随机数,种子是:", seedNum, ",生成的随机数是:")
	rand.Seed(seedNum)
	for i := 0; i < 5; i++ {
		fmt.Printf("%d ", rand.Intn(100))
	}
	//选择使用系统时间作为随机数种子
	seedNum = time.Now().UnixNano()
	fmt.Println()
	fmt.Print("使用系统时间毫秒数为种子生成的随机数,种子是:", seedNum, ",生成的随机数是:")
	rand.Seed(seedNum)
	for i := 0; i < 5; i++ {
		fmt.Printf("%d ", rand.Intn(100))
	}
	time.Sleep(time.Second) //延迟1秒钟,以获得新的时间
	seedNum = time.Now().UnixNano()
	fmt.Println()
	fmt.Print("使用系统时间毫秒数为种子第二次生成的随机数,种子是:", seedNum, ",生成的随机数是:")
	rand.Seed(seedNum)
	for i := 0; i < 5; i++ {
		fmt.Printf("%d ", rand.Intn(100))
	}
}