golang随机数生成踩过的坑记录一下
不废话了,直接上代码: package main import ( "fmt" "math/rand" ) func main() { fmt.Println(rand.Intn(100)) fmt.Println(rand.Intn(100)) } ? 运行测试一下, OK,看似没问题,但再运行一次看看: $ go run rand.go 输出的结果完全一样,查看官网上的例子: package main import ( "fmt" "math/rand" ) func main() { rand.Seed(42) // Try changing this number! 注意,注意,注意,重要的事情说三遍 answers := []string{ "It is certain","It is decidedly so","Without a doubt","Yes definitely","You may rely on it","As I see it yes","Most likely","Outlook good","Yes","Signs point to yes","Reply hazy try again","Ask again later","Better not tell you now","Cannot predict now","Concentrate and ask again","Don‘t count on it","My reply is no","My sources say no","Outlook not so good","Very doubtful",} fmt.Println("Magic 8-Ball says:",answers[rand.Intn(len(answers))]) } ? 我这边运行输出如下: package main import ( "fmt" "math/rand" "time" ) func main() { rand.Seed(time.Now().Unix()) fmt.Println(rand.Intn(100)) fmt.Println(rand.Intn(100)) } $ go run rand.go 9
几点注意项: 1、如果不使用rand.Seed(seed int64),每次运行,得到的随机数会一样,程序不停止,一直获取的随机数是不一样的; 2、每次运行时rand.Seed(seed int64),seed的值要不一样,这样生成的随机数才会和上次运行时生成的随机数不一样; 3、rand.Intn(n int)得到的随机数int i,0 <= i < n。--------------------- (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |