当前位置: 首页 > wzjs >正文

网站实名认证石家庄seo按天扣费

网站实名认证,石家庄seo按天扣费,创意网名大全,婚纱摄影网站优化技巧👻创作者:丶重明 👻创作时间:2025年3月16日 👻擅长领域:运维 目录 1.😶‍🌫️题目:猜数字游戏2.😶‍🌫️代码开发3.😶‍🌫…

👻创作者:丶重明
👻创作时间:2025年3月16日
👻擅长领域:运维

目录

  • 1.😶‍🌫️题目:猜数字游戏
  • 2.😶‍🌫️代码开发
  • 3.😶‍🌫️代码输出
  • 4.😶‍🌫️代码解析
  • 5.😶‍🌫️本文知识点
    • 5.1.😶‍🌫️math/rand包
    • 5.2.😶‍🌫️time包
  • 6.😶‍🌫️扩展:密码学安全的随机数

1.😶‍🌫️题目:猜数字游戏

编写一个猜数字的小游戏。计算机会随机生成一个 1 到 100 之间的整数,然后玩家通过输入数字来猜测。每次猜测后,计算机会告诉玩家猜的数字是大了、还是小了,直到玩家猜对为止。

要求 :

  • 程序会随机生成一个数字(范围 1 到 100)。
  • 玩家输入一个数字作为猜测。
  • 如果猜测的数字小于目标数字,程序提示 “太小了”。
  • 如果猜测的数字大于目标数字,程序提示 “太大了”。
  • 当猜中数字时,程序会输出 “恭喜你猜对了!” 并显示玩家猜测的次数。

2.😶‍🌫️代码开发

使用Go语言进行代码开发

package mainimport ("fmt""math/rand""time"
)func main() {rand.Seed(time.Now().UnixNano())target := rand.Intn(100) + 1var guess intattempts := 0fmt.Println("猜数字游戏现在开始!")fmt.Println("我已经选择了一个 1 到 100 之间的数字,请你猜一猜!")for {attempts++fmt.Print("请输入你的猜测: ")fmt.Scan(&guess)if guess < target {fmt.Println("你的猜测太小了,请再试一次。")} else if guess > target {fmt.Println("你的猜测太大了,请再试一次。")} else {fmt.Printf("恭喜你,猜对了!你用了 %d 次尝试。\n", attempts)break}}
}

3.😶‍🌫️代码输出

保存代码文件,执行go run运行代码

> go run .\9.gotest.go
猜数字游戏现在开始!
我已经选择了一个 1100 之间的数字,请你猜一猜!
请输入你的猜测: 50
你的猜测太大了,请再试一次。
请输入你的猜测: 30
你的猜测太小了,请再试一次。
请输入你的猜测: 40
你的猜测太大了,请再试一次。
请输入你的猜测: 35
你的猜测太大了,请再试一次。
请输入你的猜测: 33
你的猜测太小了,请再试一次。
请输入你的猜测: 34
恭喜你,猜对了!你用了 6 次尝试。

4.😶‍🌫️代码解析

rand.Seed(time.Now().UnixNano())

rand.Seed是Go语言中用于设置随机数生成器种子的函数,种子是随机数生成算法的起点,它决定了生成的随机数序列。

time.Now()返回当前的时间,一个Time类型的对象,然后通过.UnixNano()将时间转换为自1970年1月1日以来的纳秒数。

如果不设置种子,那么默认会使用一个固定的种子值,这样每次运行程序时,生成的随机数都是相同的。

time.Now().UnixNano()返回的纳秒数在每次程序启动时都是不同的,因此它能作为一个良好的种子,确保每次运行程序时生成的随机数都是不同的

target := rand.Intn(100) + 1这句什么意思

rand.Intn(100)会生成一个0-99的随机整数,为了避免生成0和不能生成00,所以需要+1,这样取值范围就是1-100。

后续内容就是一个for循环中运行判断逻辑,每完成一次循环,attempts的值加1,直到猜中数字后,执行break退出循环。

5.😶‍🌫️本文知识点

5.1.😶‍🌫️math/rand包

math/rand 是一个标准库包,主要用于生成伪随机数。

以下是一些常见的函数:

功能方法示例
基础随机整数Intn(n)rand.Intn(100) → 0~99
自定义范围整数Intn(max-min) + minrand.Intn(50)+10 → 10~59
随机浮点数Float64()rand.Float64() → 0.0~1.0
随机排列Permrand.Perm(5) → [3,1,4,0,2]
设置随机种子Seed(seed)rand.Seed(time.Now().UnixNano())

本文使用的就是math/rand包的Intn(n)方法和Seed方法。

5.2.😶‍🌫️time包

time包也是Go语言标准库包之一,用于处理时间相关的问题。

以下有几个常见的使用方法供参考:

  1. 获取当前时间
// 获取正常格式的当前时间:2023-10-05 14:30:15.123456 +0800 CST
time.Now()// 获取UTC格式的当前时间:
time.Now().UTC()
  1. 获取时间戳
// 获取秒级别的时间戳
now.Unix()// 获取毫米级时间戳
now.UnixMilli()// 获取纳秒级时间戳,也是本文所使用的方法
now.UnixNano()

更多内容请查看官方手册

6.😶‍🌫️扩展:密码学安全的随机数

math/rand生成的随机数可用于一般使用场景,因为结果是可预测的。

如果需生成密码学安全(Cryptographically Secure)的随机数(如密钥、令牌、密码等敏感数据),必须使用标准库中的 crypto/rand 包。

crypto/rand 包基于操作系统提供的安全熵源,生成的随机数具有密码学强度。

例如:生成随机字符串

package mainimport ("crypto/rand""fmt"
)func main() {// 生成 16 字节随机盐值salt := make([]byte, 16)_, err := rand.Read(salt)if err != nil {panic(err)}fmt.Println("盐值 (Hex):", fmt.Sprintf("%x", salt))
}

输出结果:

> go run .\10.gotest.go
盐值 (Hex): a6cbf72c30d584fba7a1794cc511258e

同系列:

上一篇【Go每日一练】计算整数数组的最大子数组和

http://www.dtcms.com/wzjs/163016.html

相关文章:

  • 合肥 做网站的公司临沂网站建设方案服务
  • 西安网站seo价格营销推广的工具有哪些
  • 铜川网站建设seo搜索优化是什么意思
  • 做网站准备seo关键词优化最多可以添加几个词
  • 动态网站系统的5个组成部分网站seo整站优化
  • 包头企业网站制作免费网站安全软件大全
  • 上海高端网站建设服务公西安发布最新通知
  • 长春绿园网站建设网络营销模式下品牌推广途径
  • 如何修改单页网站百度网站收录提交
  • 建设网站的技巧免费查权重工具
  • 好男人好资源在线观看免费官网如何优化网络速度
  • 网页版微信二维码已失效seo快速排名培训
  • 可以做外链的图片网站免费网站推广工具
  • wordpress建站需要学什么大数据下的精准营销
  • sap和国家网站做接口临沂森佳木业有限公司
  • 大学 两学一做专题网站杭州小程序建设公司
  • 承德房地产网站建设推广优化网站
  • 我们的爱情网站制作系统开发
  • wordpress idc主题宁波seo网站排名优化公司
  • 如何做网站商铺公司域名注册查询
  • 河南网站建设公司哪家好网络营销策划书格式
  • 南昌网站搭建制作公司必应搜索推广
  • 链家做网站和手机app花了多少钱百度开户资质
  • cms 网站建设网站收录
  • 有什么网站做统计图的百度指数官网数据
  • 万网域名价格seo免费培训
  • 天津做网站选津坤科技中超最新积分榜
  • 打开百度竞价页面是网站是什么有没有免费推广平台
  • 后端网站开发资源网站排名优化seo
  • 山西省建设厅招标网站首页线上宣传有哪些好的方式方法