Golang生成随机数案例实战
Golang生成随机数案例实战
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.生成1个[0-99]的随机数案例
package main import ( "fmt" "math/rand" "time" ) func main() { /* rand.Seed: 还函数是用来创建随机数的种子,如果不执行该步骤创建的随机数是一样的,因为默认Go会使用一个固定常量值来作为随机种子。 time.Now().UnixNano(): 当前操作系统时间的毫秒值 */ rand.Seed(time.Now().UnixNano()) /* 生成一个随机数 */ a := rand.Intn(100) //实际随机生成的数字范围[0,99] fmt.Printf("a的类型为[%T],a的随机数值为:[%d]\n", a, a) }
二.生成10个[200-500]的随机数案例
package main import ( "fmt" "math/rand" "time" ) func main() { /* rand.Seed: 还函数是用来创建随机数的种子,如果不执行该步骤创建的随机数是一样的,因为默认Go会使用一个固定常量值来作为随机种子。 time.Now().UnixNano(): 当前操作系统时间的毫秒值 */ rand.Seed(time.Now().UnixNano()) /* 生成十个随机数[200-500] */ for index := 1; index <= 10; index++ { random_number := rand.Intn(301) + 200 fmt.Printf("第[%d]个随机数的值为:[%d]\n", index, random_number) } }
三.烧脑版生成随机数[需要指针知识]
package main import ( "fmt" "math/rand" "time" ) func getRandomNumber(p *int, start_pos int, stop_pos int) { /* rand.Seed: 还函数是用来创建随机数的种子,如果不执行该步骤创建的随机数是一样的,因为默认Go会使用一个固定常量值来作为随机种子。 time.Now().UnixNano(): 当前操作系统时间的毫秒值 */ rand.Seed(time.Now().UnixNano()) random_number := rand.Intn(stop_pos-start_pos) + start_pos /* 将指针作为参数传递,形参间接修改实参的值 */ *p = random_number } func main() { /* 定义要生成随机值的范围 */ var ( start_pos int = 200 stop_pos int = 500 num int ) for index := 1; index <= 10; index++ { /* 每次循环时让CPU休息1毫秒,因为CPU执行太快,可能10此循环几乎在同一纳秒执行完毕。 我暂时想到的解决方案有两种: (1)以形参的方式传入随机种子值 (2)让主线程在不同的时间段调用函数 上面两种思路均可,我为了省事情就直接让主线程休眠1毫秒,即采用了第二种解决方案。 */ time.Sleep(1) getRandomNumber(&num, start_pos, stop_pos) fmt.Printf("第[%d]个随机数的值为:[%d]\n", index, num) } }
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。
欢迎交流学习技术交流,个人微信: "JasonYin2020"(添加时请备注来源及意图备注)
作者: 尹正杰, 博客: https://www.cnblogs.com/yinzhengjie/p/12208030.html