鸿蒙三方库 | harmony-utils之RandomUtil随机数与随机字符串详解
前言随机数和随机字符串在验证码、密码生成、数据打乱等场景中广泛使用。pura/harmony-utils的RandomUtil封装了随机生成方法支持多种随机类型。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、RandomUtil核心APIRandomUtil提供了以下随机生成方法方法说明返回类型使用场景randomInt(min, max)随机整数number随机选择randomDouble(min, max)随机浮点数number模拟数据randomString(length)随机字符串string验证码/密码randomUUID()随机UUIDstring唯一标识shuffle(array)随机打乱数组T[]抽奖/洗牌randomElement(array)随机取元素T随机选择1.1 核心特性简洁易用封装复杂逻辑为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃多种类型支持整数、浮点、字符串、UUID等随机类型1.2 随机类型对照类型方法范围典型用途整数randomInt[min, max]随机索引浮点randomDouble[min, max)模拟数据字符串randomString指定长度验证码UUIDrandomUUID标准格式唯一ID二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 生成随机数import{RandomUtil}frompura/harmony-utils;Button(生成随机数).width(100%).onClick((){try{letintRandomUtil.randomInt(1,100);letdoubleRandomUtil.randomDouble(0,1);this.result随机整数(1-100):${int}\n随机浮点(0-1):${double.toFixed(4)};}catch(e){this.result异常: e;}})2.3 生成随机字符串Button(生成随机字符串).width(100%).onClick((){try{letstr8RandomUtil.randomString(8);letstr16RandomUtil.randomString(16);letuuidRandomUtil.randomUUID();this.result8位:${str8}\n16位:${str16}\nUUID:${uuid};}catch(e){this.result异常: e;}})三、完整页面示例import{RandomUtil}frompura/harmony-utils;EntryComponentstruct RandomDemo{Stateresult:string;build(){Column({space:12}){Button(随机数).width(100%).onClick((){this.result整数:${RandomUtil.randomInt(1,100)}\n浮点:${RandomUtil.randomDouble(0,1).toFixed(4)};});Button(随机字符串).width(100%).onClick((){this.result8位:${RandomUtil.randomString(8)}\nUUID:${RandomUtil.randomUUID()};});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 验证码生成import{RandomUtil}frompura/harmony-utils;functiongenerateCaptcha(length:number6):string{returnRandomUtil.randomString(length).toUpperCase();}4.2 抽奖功能functiondrawPrize(participants:string[]):string{letshuffledRandomUtil.shuffle(participants);returnRandomUtil.randomElement(shuffled);}五、注意事项范围包含randomInt包含max值密码安全randomString不适合密码学安全场景UUID格式randomUUID遵循标准UUID格式初始化依赖使用前需确保AppUtil.init()已调用shuffle修改shuffle可能修改原数组六、常见问题Q1: randomInt(1, 10)包含10吗包含randomInt的范围是闭区间[min, max]。Q2: randomString包含哪些字符通常包含大小写字母和数字具体取决于实现。Q3: randomUUID是v4 UUID吗通常是v4版本基于随机数但具体版本取决于实现。Q4: shuffle会修改原数组吗取决于实现建议使用返回值而非依赖原数组。总结RandomUtil的随机生成方法为验证码、密码、抽奖等场景提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法快速生成各类随机数据。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。

相关新闻

终极指南:用palworld-save-tools轻松掌握帕鲁世界存档编辑

终极指南:用palworld-save-tools轻松掌握帕鲁世界存档编辑

终极指南:用palworld-save-tools轻松掌握帕鲁世界存档编辑 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾为帕鲁世界存档损坏…

2026/7/27 11:47:17 阅读更多 →
grunt-contrib-jshint报告输出全攻略:自定义reporter与结果分析

grunt-contrib-jshint报告输出全攻略:自定义reporter与结果分析

grunt-contrib-jshint报告输出全攻略:自定义reporter与结果分析 【免费下载链接】grunt-contrib-jshint Validate files with JSHint. 项目地址: https://gitcode.com/gh_mirrors/gr/grunt-contrib-jshint grunt-contrib-jshint是一款强大的JavaScript代码质…

2026/7/27 11:46:17 阅读更多 →
【爱马仕】Hermes 自动化工具部署避坑手册 解压、初始化全流程讲解(含安装包)

【爱马仕】Hermes 自动化工具部署避坑手册 解压、初始化全流程讲解(含安装包)

Windows 手动部署 Hermes 难度高?整合一键包简化本地智能环境搭建 不少想要体验 Hermes Agent 的用户,在着手本地部署时都会卡在环境配置环节。 手动部署需要逐个安装各类依赖组件、调试运行参数,同时还容易遭遇命令行报错、系统安全拦截、程…

2026/7/27 11:46:17 阅读更多 →

最新新闻

MySQL自动化测试数据快照管理:从原理到CI/CD集成的完整实践

MySQL自动化测试数据快照管理:从原理到CI/CD集成的完整实践

1. 项目概述:为什么我们需要自动化测试数据快照?在软件开发和测试领域,数据是驱动一切验证的基石。无论是功能测试、性能压测还是回归验证,我们都需要一个稳定、可控且可重复的数据环境。然而,现实情况往往是&#xff…

2026/7/27 12:07:31 阅读更多 →
接口测试实战:从核心价值到Postman与JMeter应用

接口测试实战:从核心价值到Postman与JMeter应用

1. 接口测试的核心价值与适用场景第一次接触接口测试是在2017年,当时我们团队正在开发一个电商平台的支付系统。前端同学抱怨说支付成功率忽高忽低,但后端日志显示一切正常。直到我们用Postman直接调用支付接口,才发现当金额超过5位数时&…

2026/7/27 12:07:31 阅读更多 →
大模型产品化总结:从「模型能力演示」到「用户价值闭环」的关键跃迁

大模型产品化总结:从「模型能力演示」到「用户价值闭环」的关键跃迁

大模型产品化总结:从「模型能力演示」到「用户价值闭环」的关键跃迁 一、大模型进入产品化深水区 2024 年到 2025 年,大模型的讨论重心正在发生一个根本性转移:从「模型能做什么」转向「产品如何让用户持续使用」。 早期的大模型产品&#xf…

2026/7/27 12:07:31 阅读更多 →
微信聊天记录备份工具:如何安全保存你的数字记忆

微信聊天记录备份工具:如何安全保存你的数字记忆

微信聊天记录备份工具:如何安全保存你的数字记忆 【免费下载链接】WechatBakTool 基于C#的微信PC版聊天记录备份工具,提供图形界面,解密微信数据库并导出聊天记录。 项目地址: https://gitcode.com/gh_mirrors/we/WechatBakTool 你是否…

2026/7/27 12:07:31 阅读更多 →
AI 编译技术月度观察:开源项目的重大更新、论文趋势与工具链成熟度评估

AI 编译技术月度观察:开源项目的重大更新、论文趋势与工具链成熟度评估

AI 编译技术月度观察:开源项目的重大更新、论文趋势与工具链成熟度评估 一、AI 编译技术领域的动态痛点 AI 编译技术(MLIR、XLA、TVM、Triton)的迭代速度极快,每月都有重大更新。跟踪动态的痛点在于:1)各项…

2026/7/27 12:07:30 阅读更多 →
3分钟掌握B站视频下载:免费获取大会员4K高清内容的终极指南

3分钟掌握B站视频下载:免费获取大会员4K高清内容的终极指南

3分钟掌握B站视频下载:免费获取大会员4K高清内容的终极指南 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 你是否曾经遇到…

2026/7/27 12:06:30 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻