【go从零单排】Random Numbers、Number Parsing

挪威特罗姆瑟夜景

🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

📗概念

这里是引用

💻代码

Random Numbers

package mainimport ("fmt""math/rand/v2" //math/rand/v2:用于生成随机数。注意这里使用的是 rand 包的版本 2。
)func main() {//rand.IntN(100) 生成一个 0 到 99 之间的随机整数。调用两次以生成两个随机整数,并用逗号分隔打印。fmt.Print(rand.IntN(100), ",")fmt.Print(rand.IntN(100))fmt.Println()//rand.Float64() 生成一个 0.0 到 1.0 之间的随机浮点数,并打印。fmt.Println(rand.Float64())//通过 rand.Float64()*5 生成一个 0.0 到 5.0 之间的随机浮点数,再加上 5,使结果范围变为 5.0 到 10.0。//调用两次以生成两个随机浮点数,并用逗号分隔打印。fmt.Print((rand.Float64()*5)+5, ",")fmt.Print((rand.Float64() * 5) + 5)fmt.Println()//rand.NewPCG(42, 1024) 创建一个新的 PCG(Permuted Congruential Generator)随机数生成器,使用种子值 42 和状态值 1024。s2 := rand.NewPCG(42, 1024)//rand.New(s2) 使用这个生成器创建一个新的随机数生成器实例 r2。r2 := rand.New(s2)//通过 r2.IntN(100) 生成两个 0 到 99 之间的随机整数,并用逗号分隔打印。fmt.Print(r2.IntN(100), ",")fmt.Print(r2.IntN(100))fmt.Println()//再次创建一个 PCG 随机数生成器,使用相同的种子和状态值,生成器实例为 r3。s3 := rand.NewPCG(42, 1024)//通过 r3.IntN(100) 生成两个 0 到 99 之间的随机整数,并用逗号分隔打印。r3 := rand.New(s3)fmt.Print(r3.IntN(100), ",")fmt.Print(r3.IntN(100))fmt.Println()
}//输出
//48,89
//0.7365009847357684
//7.945666205049617,7.769640472616085
//94,49
//94,49

Number Parsing

package mainimport ("fmt""strconv" //strconv:用于字符串与基本数据类型之间的转换。
)func main() {//strconv.ParseFloat("1.234", 64) 将字符串 "1.234" 转换为 64 位浮点数(float64),结果赋值给 f。f, _ := strconv.ParseFloat("1.234", 64)fmt.Println(f)//strconv.ParseInt("123", 0, 64) 将字符串 "123" 转换为 64 位整数(int64)。//第二个参数 0 表示根据字符串的前缀自动推断进制(例如,0x 表示十六进制,0 表示十进制)。i, _ := strconv.ParseInt("123", 0, 64)fmt.Println(i)//strconv.ParseInt("0x1c8", 0, 64) 将字符串 "0x1c8" 转换为整数,0x1c8 是十六进制数,等于十进制的 456。d, _ := strconv.ParseInt("0x1c8", 0, 64)fmt.Println(d)//strconv.ParseUint("789", 0, 64) 将字符串 "789" 转换为 64 位无符号整数(uint64)u, _ := strconv.ParseUint("789", 0, 64)fmt.Println(u)//strconv.Atoi("135") 是 strconv.ParseInt 的简化版本,直接将字符串 "135" 转换为整数(int)。k, _ := strconv.Atoi("135")fmt.Println(k)//strconv.Atoi("wat") 尝试将字符串 "wat" 转换为整数,由于 "wat" 不是有效的数字,转换会失败。_, e := strconv.Atoi("wat")fmt.Println(e)
}
//输出
//1.234
//123
//456
//789
//135
//strconv.Atoi: parsing "wat": invalid syntax

🔍理解

  • 随机数的可重复性:使用相同的种子会生成相同的随机数序列,这在调试时很有用。
  • 种子选择:在生产环境中,通常会使用当前时间或其他变化的值作为种子,以生成不可预测的随机数序列。
  • 错误处理:在实际应用中,建议对每个转换操作的错误进行处理,避- 免程序因未处理的错误而崩溃。
  • 进制选择:在转换整数时,确保理解进制的选择,尤其是使用 0 作为进制参数时。
  • 浮点数精度:注意浮点数的精度问题,特别是在进行数学运算时。

💡 Tips小知识点

  • 创建自定义的随机数生成器(使用 PCG 算法),并使用相同的种子和状态值生成随机数。使用相同的种子和状态值,r2 和 r3 生成的随机数序列是确定的,因此可以预测这些随机数的值。

💪无人扶我青云志,我自踏雪至山巅。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/470211.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网页web无插件播放器EasyPlayer.js点播播放器遇到视频地址播放不了的现象及措施

在数字媒体时代,视频点播已成为用户获取信息和娱乐的重要方式。EasyPlayer.js作为一款流行的点播播放器,以其强大的功能和易用性受到广泛欢迎。然而,在使用过程中,用户可能会遇到视频地址无法播放的问题,这不仅影响用户…

mysql5.7安装SSL报错解决(2),总结

Caused by: java.io.EOFException: SSL peer shut down incorrectly 在java里面连接mysql5.7.17数据库,报以上错误, 将数据库升级到mysql5.7.44就可以了。 这两天处理java连接mysql的问题,报了各种错误,总结一下就是openssl和mysq…

vue项目npm run serve出现【- Network: unavailable】(从排查到放弃)

1. 问题现象 环境: 系统:win11node:v16.20.2“vue”: “2.6.10” 执行npm run serve启动vue项目,期望: App running at:- Local: http://localhost:9528/ - Network: http://x.x.x.x:9528/实际: App runn…

【vue2.0入门】vue单文件组件

目录 引言一、配置编辑器vue2代码片段模版1. 配置vue2代码模版2. 使用vue模版 二、模版介绍1. template区域2. script 区域2.1 name2.2 components2.3 props2.4 data2.5 computed2.6 watch2.7 methods2.8 生命周期函数 3. style 区域 三、总结 引言 本系列教程旨在帮助一些零基…

外星人入侵

学习于Python编程从入门到实践(Eric Matthes 著) 整体目录:外星人入侵文件夹是打包后的不必在意 图片和音效都是网上下载的 音效下载网站:Free 游戏爆击中 Sound Effects Download - Pixabay 运行效果:可以上下左右移…

【Qt】Macbook M1下载安装

文章目录 一、下载Xcode命令行工具二、在Cion中配置编译器三、安装Qt四、配置qmake环境五、创建Qt项目 博主已经下载了Clion,所以本文是将qt配置到Clion上 本博客所写的教程有一定的问题,因为我在官网下载后发现有一些所需的包是没有的,不知道…

Vim9 语法高亮syntax 在指定的缓冲区和窗口执行命令

背景:从开发,创建makefile、编译、单元测试、到生产部署都只有俺一个人,所以所有的工作都要自己完成,因此有了想法做一个插件,按需实现:构建Makefile,编译、打包、压缩、上传服务器、解压、安装…

docker之容器设置开机自启(4)

命令语法: docker update --restartalways 容器ID/容器名 选项: --restart参数 no 默认策略,在容器退出时不重启容器 on-failure 在容器非正常退出时(退出状态非0),才会重启容器 …

动态规划 —— 子数组系列-最大子数组和

1. 最大子数组和 题目链接: 53. 最大子数组和 - 力扣(LeetCode)https://leetcode.cn/problems/maximum-subarray/description/ 2. 算法原理 状态表示:以某一个位置为结尾或者以某一个位置为起点 dp[i]表示:以i位置为结…

【教程】华南理工大学国际校区宿舍门锁声音设置

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 视频教程:【教程】华南理工大学国际校区宿舍门锁声音设置_哔哩哔哩_bilibili 来自: https://tieba.baidu.com/p/8297840035

【AI技术对电商的影响】

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

uni-app中使用 unicloud 云开发平台③

文章目录 六、hbuilderX 中使用 unicloud 云开发平台文档传统业务开发流程什么是 unicloudunicloud 优点开发流程uncloud 构成云数据库云存储及 CDN创建云函数工程七、unicloud api 操作云函数调用云函数实现云数据库基本增删改查1. 获取数据库引用云存储操作六、hbuilderX 中使…

智享AI 无人自动直播的崛起 ,引领智能互动与自动带货新潮流!

在当今数字化飞速发展的时代,商业领域正经历着一场前所未有的变革。智能互动与自动带货成为了新的潮流,而其中最引人瞩目的便是最新的 AI 无人自动直播玩法,它宛如一股强劲的东风,引领着行业的风向。 AI 无人自动直播是多种先进技…

科技云报到:数字化转型,从不确定性到确定性的关键路径

科技云报到原创。 数字化转型是VUCA时代最大的确定性。 如果说,过去是数字化转型的试验阶段,实施的是开荒动土、选种育苗,那么当前要进行的是精耕细作、植树造林,数字化转型已进入了由个别行业、个别场景的“点状应用”向各行各业…

vue3+vite 前端打包不缓存配置

最近遇到前端部署后浏览器得清缓存才能出现最新页面效果得问题 所以…按以下方式配置完打包就没啥问题了,原理很简单就是加个时间戳 /* eslint-disable no-undef */ import {defineConfig, loadEnv} from vite import path from path import createVitePlugins from…

基于Qt/C++全局键盘和鼠标事件监控工具

项目介绍: 该项目实现了一个基于 Qt 框架的全局键盘和鼠标事件监控工具,主要功能包括: 实时监控全局键盘事件:捕获并显示所有键盘按键,并将按键的虚拟键码转为键名显示。实时监控全局鼠标事件:捕获并显示…

华为数通HCIA系列第5次考试-【2024-46周-周一】

文章目录 1、子网掩码有什么作用,和IP地址是什么关系,利用子网掩码可以获取哪些信息?2、已知一个IP地址是192.168.1.1,子网掩码是255.255.255.0,求其网络地址3、已知某主机的IP地址是192.168.100.200,子网掩…

arkUI:遍历数据数组动态渲染(forEach)

arkUI:遍历数据数组动态渲染(forEach) 1 主要内容说明2 相关内容2.1 ForEach 的基本语法2.2 简单遍历数组2.2 多维数组遍历2.4 使用唯一键2.5 源码1的相关说明2.5.1 源码1 (遍历数据数组动态渲染)2.5.2 源码1运行效果 …

Ue5 umg学习(一)

学习视频资料链接 2、UI编辑界面_哔哩哔哩_bilibili 打开ue5虚幻引擎 创建新的文件夹UI,在这个文件夹里写东西 点击停靠在布局中 双击点进UI文件夹 右键用户界面,选择控件蓝图 创建控件蓝图,重命名,在名称后面加一个_BP1代表是…

PYNQ 框架 - 中断(INTR)驱动

目录 1. 简介 2. 分析 2.1 Block Design 2.2 AXI Timer 2.2.1 IP 基本信息 2.2.2 IP 地址空间 2.2.3 级联模式 2.2.4 生成/捕获模式 2.3 AXI Interrupt 2.3.1 IP 基本信息 2.3.2 IP 地址空间 2.3.3 相关概念 2.3.4 参数配置 2.3.5 中断确认寄存器 3. PYNQ 代码 …