 | |  |  | AIWROK软件随机数[RJrxn1afZqW7yjf2NK]方法小结
- // ... existing code ...
- /*
- 🍎交流QQ群711841924群一,苹果内测群,528816639
- 🍎🔨LtUqFOGkc6随机小数生成函数
- */
- // 🔨LtUqFOGkc6随机小数生成函数
- // 📌LtUqFOGkc6随机小数生成函数
- /*
- 类别 详情说明
- 方法功能 生成指定范围内的随机小数
- 方法签名 Double LtUqFOGkc6(Double min, Double max)
- 返回值 Double(生成的随机小数)
- 参数 - Double min:随机小数的最小值
- - Double max:随机小数的最大值
- */
- function LtUqFOGkc6(min, max) {
- return Math.random() * (max - min) + min;
- }
- // 📌随机点击位置生成函数(修复版本)
- /*
- 类别 详情说明
- 方法功能 在指定区域内生成随机点击坐标
- 方法签名 Object randClickPosition(Double left, Double top, Double right, Double bottom)
- 返回值 Object(包含x和y坐标的对象)
- 参数 - Double left:区域左边界
- - Double top:区域上边界
- - Double right:区域右边界
- - Double bottom:区域下边界
- */
- function randClickPosition(left, top, right, bottom) {
- var x = LtUqFOGkc6(left, right);
- var y = LtUqFOGkc6(top, bottom);
- return {x: x, y: y};
- }
- // 使用示例:
- printl("=== LtUqFOGkc6随机小数函数使用示例 ===");
- // 生成0到1之间的随机小数
- var randomDecimal1 = LtUqFOGkc6(0, 1);
- printl("生成0-1之间的随机小数: " + randomDecimal1);
- // 生成10到100之间的随机小数
- var randomDecimal2 = LtUqFOGkc6(10, 100);
- printl("生成10-100之间的随机小数: " + randomDecimal2);
- // 生成随机延迟时间(1.5秒到3.5秒之间)
- var delayTime = LtUqFOGkc6(1.5, 3.5);
- printl("生成随机延迟时间: " + delayTime + "秒");
- // 在点击操作中使用随机小数作为坐标
- var x = LtUqFOGkc6(100.0, 500.0);
- var y = LtUqFOGkc6(200.0, 800.0);
- printl("生成随机坐标: (" + x + ", " + y + ")");
- // 使用修复后的随机点击位置函数
- var clickPos = randClickPosition(100.0, 200.0, 500.0, 800.0);
- printl("生成随机点击位置: (" + clickPos.x + ", " + clickPos.y + ")");
- // 更多随机数相关函数示例:
- // 📌随机整数生成函数
- /*
- 类别 详情说明
- 方法功能 生成指定范围内的随机整数
- 方法签名 Int32 randInt(Int32 min, Int32 max)
- 返回值 Int32(生成的随机整数)
- 参数 - Int32 min:随机整数的最小值
- - Int32 max:随机整数的最大值
- */
- function randInt(min, max) {
- return Math.floor(Math.random() * (max - min + 1)) + min;
- }
- // 📌随机布尔值生成函数
- /*
- 类别 详情说明
- 方法功能 生成随机布尔值(true/false)
- 方法签名 Boolean randBool()
- 返回值 Boolean(生成的随机布尔值)
- 参数 无
- */
- function randBool() {
- return Math.random() < 0.5;
- }
- // 📌随机数组元素选择函数
- /*
- 类别 详情说明
- 方法功能 从数组中随机选择一个元素
- 方法签名 Object randChoice(Array arr)
- 返回值 Object(数组中的随机元素)
- 参数 - Array arr:源数组
- */
- function randChoice(arr) {
- if (!arr || arr.length === 0) return null;
- var index = randInt(0, arr.length - 1);
- return arr[index];
- }
- // 📌随机颜色生成函数
- /*
- 类别 详情说明
- 方法功能 生成随机颜色值
- 方法签名 String randColor()
- 返回值 String(十六进制颜色值)
- 参数 无
- */
- function randColor() {
- var letters = '0123456789ABCDEF';
- var color = '#';
- for (var i = 0; i < 6; i++) {
- color += letters[Math.floor(Math.random() * 16)];
- }
- return color;
- }
- // 使用示例:
- printl("=== 更多随机数方法使用示例 ===");
- // 随机整数示例
- var randomInteger = randInt(1, 100);
- printl("生成1-100之间的随机整数: " + randomInteger);
- // 随机布尔值示例
- var randomBoolean = randBool();
- printl("生成随机布尔值: " + randomBoolean);
- // 随机数组元素示例
- var fruits = ["苹果", "香蕉", "橙子", "葡萄", "草莓"];
- var randomFruit = randChoice(fruits);
- printl("从数组中随机选择: " + randomFruit);
- // 随机颜色示例
- var randomColor = randColor();
- printl("生成随机颜色: " + randomColor);
- // 综合应用示例:模拟用户随机操作
- function simulateRandomUserActions() {
- printl("=== 模拟用户随机操作 ===");
-
- // 随机决定执行哪种操作
- var actions = ["点击", "滑动", "输入", "等待"];
- var action = randChoice(actions);
-
- switch(action) {
- case "点击":
- var pos = randClickPosition(0, 0, screen.getScreenWidth(), screen.getScreenHeight());
- printl("随机点击屏幕位置: (" + pos.x + ", " + pos.y + ")");
- // hid.click(pos.x, pos.y); // 实际点击操作
- break;
-
- case "滑动":
- var startPos = randClickPosition(100, 100, 400, 600);
- var endPos = randClickPosition(100, 100, 400, 600);
- printl("随机滑动从: (" + startPos.x + ", " + startPos.y + ") 到 (" + endPos.x + ", " + endPos.y + ")");
- // hid.swip(startPos.x, startPos.y, endPos.x, endPos.y, 50, 500, 1); // 实际滑动操作
- break;
-
- case "输入":
- var texts = ["Hello", "World", "AIWork", "Automation"];
- var text = randChoice(texts);
- printl("随机输入文本: " + text);
- // hid.inputSimple(text); // 实际输入操作
- break;
-
- case "等待":
- var waitTime = randInt(1000, 3000);
- printl("随机等待: " + waitTime + "毫秒");
- // sleep.millisecond(waitTime); // 实际等待操作
- break;
- }
- }
- // 执行模拟示例
- simulateRandomUserActions();
- printl("=== 随机数方法示例结束 ===");
- // ... existing code ...
复制代码📌GQGqcAlZv2随机字符 类别 | 详情 | 功能描述 | 生成指定长度的随机字符 | 方法声明 | String GQGqcAlZv2(Int32 length) | 返回值类型 | String(生成的随机字符) | 参数说明 | - Int32 length:需要生成的随机字符长度 | 调用案例 | 1. 生成 10 位随机字符:var randomStr = GQGqcAlZv2 (10);
2. 生成 5 位随机字符:var shortRandomStr = GQGqcAlZv2 (5);
3. 在配置中使用:config.setConfig ("random_device_id", GQGqcAlZv2 (16)); |
📌WBJqf91s7J随机整数 类别 | 详情 | 功能描述 | 随机整数 | 方法声明 | Int32 WBJqf91s7J(Int32, Int32) | 返回值类型 | Int32 | 参数说明 | Int32:起始;Int32:结束 | 调用案例 | rand.randNumber(1000,9999) |
📌LtUqFOGkc6随机小数 类别 | 详情 | 功能描述 | 生成指定范围内的随机小数 | 方法声明 | Double LtUqFOGkc6(Double min, Double max) | 返回值类型 | Double(生成的随机小数) | 参数说明 | - Double min:随机小数的最小值
- Double max:随机小数的最大值 | 调用案例 | 1. 生成 0-1 之间的随机小数:var randomDecimal1 = LtUqFOGkc6 (0, 1);
2. 生成 10-100 之间的随机小数:var randomDecimal2 = LtUqFOGkc6 (10, 100);
3. 生成 1.5-3.5 秒的随机延迟:var delayTime = LtUqFOGkc6 (1.5, 3.5);
4. 生成随机坐标:var x = LtUqFOGkc6 (100.0, 500.0); var y = LtUqFOGkc6 (200.0, 800.0);
5. 生成随机 OCR 区域:var left = LtUqFOGkc6 (0.1, 0.3); (top、right、bottom 类似) |
📌随机布尔值生成函数 类别 | 详情说明 | 函数名称 | randBool | 方法功能 | 生成随机布尔值 (true/false) | 方法签名 | Boolean randBool() | 返回值 | Boolean(生成的随机布尔值) | 参数 | 无 | | | 函数名称 | randBoolWithProbability | 方法功能 | 根据指定概率生成随机布尔值 | 方法签名 | Boolean randBoolWithProbability(Double probability) | 返回值 | Boolean(生成的随机布尔值) | 参数 | - Double probability:返回 true 的概率(0.0 到 1.0 之间) |
应用场景 | 示例代码 | 说明 | 基本随机布尔值生成 | var randomBoolean1 = randBool(); | 生成一个随机布尔值 | 生成多个随机布尔值 | for (var i = 0; i < 5; i++) {
printl ("随机布尔值" + (i+1) + ":" + randBool ());
} | 循环生成 5 个随机布尔值 | 带概率的随机布尔值 | printl ("30% 概率为 true:" + randBoolWithProbability (0.3));
printl ("70% 概率为 true:" + randBoolWithProbability (0.7));
printl ("90% 概率为 true:" + randBoolWithProbability (0.9)); | 按照指定概率生成布尔值 | 随机决定操作执行 | function maybePerformAction() {
if (randBool()) {
printl ("执行操作 A");
// 执行操作 A 的代码
} else {
printl ("执行操作 B");
// 执行操作 B 的代码
}
} | 50% 概率执行操作 A,50% 概率执行操作 B | 基于概率决定功能启用 | function checkFeatureEnabled() {
// 假设新功能有 20% 的概率启用
var isNewFeatureEnabled = randBoolWithProbability(0.2);
if (isNewFeatureEnabled) {
printl ("新功能已启用");
// 启用新功能的代码
} else {
printl ("使用默认功能");
// 使用默认功能的代码
}
} | 20% 概率启用新功能,80% 概率使用默认功能 | 随机错误模拟 | function simulateRandomError() {
// 假设有 10% 的概率出现错误
if (randBoolWithProbability(0.1)) {
printl ("模拟错误发生");
// 错误处理代码
return false;
}
printl ("操作成功");
return true;
} | 10% 概率模拟错误发生,90% 概率操作成功 | 随机化用户行为 | function simulateUserBehavior() {
printl ("模拟用户行为:");
// 用户有 70% 的概率点击按钮
if (randBoolWithProbability(0.7)) {
printl ("用户点击了按钮");
} else {
printl ("用户未点击按钮");
}
// 用户有 30% 的概率输入内容
if (randBoolWithProbability(0.3)) {
printl ("用户输入了内容");
} else {
printl ("用户未输入内容");
}
// 用户有 50% 的概率继续操作
if (randBool()) {
printl ("用户继续下一步操作");
} else {
printl ("用户退出操作");
}
} | 模拟不同概率的用户交互行为 | 配置随机化 | function setRandomConfigurations() {
printl ("设置随机配置:");
// 随机启用日志
var enableLogging = randBool();
config.setConfig("enable_logging", enableLogging.toString());
printl ("日志启用:" + enableLogging);
// 随机启用调试模式(20% 概率)
var debugMode = randBoolWithProbability(0.2);
config.setConfig("debug_mode", debugMode.toString());
printl ("调试模式:" + debugMode);
// 随机选择主题
var darkTheme = randBool();
config.setConfig("dark_theme", darkTheme.toString());
printl ("深色主题:" + darkTheme);
} | 随机配置系统参数,包括日志、调试模式和主题等 | | function randomAutomationBehavior() {
printl ("随机自动化行为:");
// 随机决定是否进行 OCR 识别
if (randBool()) {
printl ("执行 OCR 识别");
// OCR 识别代码
// var ocrResult = screen.ocr(0, 0, 1, 1);
} else {
printl ("跳过 OCR 识别");
}
// 随机决定是否截图
if (randBoolWithProbability(0.8)) {
printl ("执行截图");
// 截图代码
// var screenshot = screen.screenShotFull();
} else {
printl ("跳过截图");
}
// 随机决定是否发送网络请求
if (randBool()) {
printl ("发送网络请求");
// 网络请求代码
// var response = new OkHttp().get(' https://example.com/api');
} else {
printl ("跳过网络请求");
}
} | |
📌随机数组元素选择函数 类别
| 详情说明
| 函数名称
| randArrayElement
| 方法功能
| 从数组中随机选择一个元素
| 方法签名
| Object randArrayElement(Array array)
| 返回值
| Object(数组中的随机元素)
| 参数
| - Array array:源数组
| | | 函数名称
| randArrayElements
| 方法功能
| 从数组中随机选择指定数量的元素
| 方法签名
| Array randArrayElements(Array array, Int32 count)
| 返回值
| Array(包含随机选择元素的数组)
| 参数
| - Array array:源数组 - Int32 count:需要选择的元素数量
|
使用示例表
应用场景
| 示例代码
| 说明
| 基本使用示例
| var colors = ["红色", "绿色", "蓝色", "黄色", "紫色"]; var randomColor = randArrayElement(colors); printl ("从颜色数组中随机选择:" + randomColor);
| 从颜色数组中随机选择一个元素
| 多次随机选择示例
| printl ("连续 3 次随机选择颜色:"); for (var i = 0; i < 3; i++) { printl ("第" + (i+1) + "次选择:" + randArrayElement (colors)); }
| 循环 3 次从颜色数组中随机选择元素
| 随机选择多个元素示例
| var selectedColors = randArrayElements(colors, 3); printl ("随机选择 3 种颜色:" + selectedColors.join (","));
| 从颜色数组中随机选择 3 个不重复的元素
| 随机选择应用进行操作
| function randomAppOperation() { var apps = ["微信", "QQ", "淘宝", "微博", "抖音", "快手"]; var selectedApp = randArrayElement(apps); printl ("随机选择操作应用:" + selectedApp); //app.openApp (selectedApp); // 实际启动应用 }
| 随机选择一个应用进行操作
| 随机选择网络请求方法
| | 随机组合 HTTP 请求方法和 URL 地址
| 随机选择 OCR 识别区域
| function randomOCRRegion() { var regions = [ [0, 0, 0.5, 0.5], // 左上角区域 [0.5, 0, 1, 0.5], // 右上角区域 [0, 0.5, 0.5, 1], // 左下角区域 [0.5, 0.5, 1, 1], // 右下角区域 [0.25, 0.25, 0.75, 0.75] // 中心区域 ]; var region = randArrayElement(regions); printl ("随机 OCR 识别区域: [" + region.join (",") + "]"); return region; }
| 从预设的区域中随机选择一个作为 OCR 识别区域
| 随机选择点击策略
| function randomClickStrategy() { var strategies = [ function () { printl ("执行普通点击"); }, function () { printl ("执行双击操作"); }, function () { printl ("执行长按操作"); }, function () { printl ("执行滑动操作"); } ]; var strategy = randArrayElement(strategies); strategy (); // 执行选中的策略 }
| 随机选择一种交互操作策略并执行
| 随机选择测试数据
| function getRandomTestData() { var usernames = ["user123", "testuser", "demoaccount", "sampleuser"]; var passwords = ["password123", "testpass", "demo123", "samplepass"]; var emails = ["user@example.com", "test@mail.com", "demo@test.com"]; var userData = { username: randArrayElement(usernames), password: randArrayElement(passwords), email: randArrayElement(emails) }; printl ("随机测试数据:" + JSON.stringify (userData)); return userData; }
| 从不同数组中随机选择数据组合成测试用户信息
|
📌随机日期 类别
| 详情说明
| 函数名称
| randomDate
| 方法功能
| 生成指定范围内的随机日期
| 方法签名
| Date randomDate(Date startDate, Date endDate)
| 返回值
| Date(生成的随机日期)
| 参数
| - Date startDate:随机日期的开始范围 - Date endDate:随机日期的结束范围
| | | 函数名称
| randomDateString
| 方法功能
| 生成指定格式的随机日期字符串
| 方法签名
| String randomDateString(Date startDate, Date endDate, String format)
| 返回值
| String(生成的随机日期字符串)
| 参数
| - Date startDate:随机日期的开始范围 - Date endDate:随机日期的结束范围 - String format:日期格式(如:"yyyy-MM-dd"、"yyyy/MM/dd HH:mm:ss")
| | | 函数名称
| formatDate
| 方法功能
| 将日期对象格式化为指定格式的字符串
| 方法签名
| String formatDate(Date date, String format)
| 返回值
| String(格式化后的日期字符串)
| 参数
| - Date date:要格式化的日期对象 - String format:日期格式(如:"yyyy-MM-dd"、"yyyy/MM/dd HH:mm:ss")
|
使用示例表 应用场景
| 示例代码
| 说明
| 基本随机日期生成示例
| var startDate = new Date (2020, 0, 1); // 2020 年 1 月 1 日 var endDate = new Date (2025, 11, 31); // 2025 年 12 月 31 日 var randomDateResult = randomDate(startDate, endDate); printl ("生成随机日期:" + randomDateResult);
| 生成 2020-2025 年间的随机日期
| 随机日期字符串示例
| var randomDateStringResult = randomDateString(startDate, endDate, "yyyy-MM-dd"); printl ("生成随机日期字符串 (yyyy-MM-dd):" + randomDateStringResult); var randomDateTimeString = randomDateString(startDate, endDate, "yyyy/MM/dd HH:mm:ss"); printl ("生成随机日期时间字符串:" + randomDateTimeString);
| 生成指定格式的随机日期字符串,支持 "yyyy-MM-dd" 和 "yyyy/MM/dd HH:mm:ss" 等格式
| 多次生成随机日期示例
| printl ("连续生成 5 个随机日期:"); for (var i = 0; i < 5; i++) { var date = randomDate(startDate, endDate); printl ("随机日期" + (i+1) + ":" + formatDate (date, "yyyy-MM-dd HH:mm:ss")); }
| 循环生成 5 个指定范围内的随机日期并格式化输出
| 随机生成用户注册日期
| function generateRandomUserRegistration() { var now = new Date(); var oneYearAgo = new Date(); oneYearAgo.setFullYear(now.getFullYear() - 1); var registrationDate = randomDate(oneYearAgo, now); printl ("用户随机注册日期:" + formatDate (registrationDate, "yyyy-MM-dd HH:mm:ss")); return registrationDate; }
| 生成近一年内的随机用户注册日期
| 随机生成订单日期
| function generateRandomOrderDate() { var now = new Date(); var threeMonthsAgo = new Date(); threeMonthsAgo.setMonth(now.getMonth() - 3); var orderDate = randomDate(threeMonthsAgo, now); printl ("订单随机日期:" + formatDate (orderDate, "yyyy-MM-dd")); return orderDate; }
| 生成近三个月内的随机订单日期
| 随机生成生日
| function generateRandomBirthday() { var startBirthday = new Date (1980, 0, 1); // 1980 年 1 月 1 日 var endBirthday = new Date (2005, 11, 31); // 2005 年 12 月 31 日 var birthday = randomDate(startBirthday, endBirthday); printl ("随机生日:" + formatDate (birthday, "yyyy-MM-dd")); return birthday; }
| 生成 1980-2005 年间的随机生日日期
| 随机生成日志时间
| function generateRandomLogTime() { var now = new Date(); var oneWeekAgo = new Date(); oneWeekAgo.setDate(now.getDate() - 7); var logTime = randomDate(oneWeekAgo, now); printl ("日志随机时间:" + formatDate (logTime, "yyyy-MM-dd HH:mm:ss.SSS")); return logTime; }
| 生成近一周内的随机日志时间,精确到毫秒
| 随机生成项目开始和结束日期
| function generateRandomProjectDates() { var now = new Date(); var oneYearLater = new Date(); oneYearLater.setFullYear(now.getFullYear() + 1); var projectStart = randomDate(now, oneYearLater); var projectEnd = new Date(projectStart); projectEnd.setMonth (projectStart.getMonth () + Math.floor (Math.random () * 12) + 1); // 1-12 个月后结束 printl ("项目开始日期:" + formatDate (projectStart, "yyyy-MM-dd")); printl ("项目结束日期:" + formatDate (projectEnd, "yyyy-MM-dd")); return {start: projectStart, end: projectEnd}; }
| 生成未来一年内的项目开始日期,以及 1-12 个月后的结束日期
| 随机生成历史事件日期
| function generateRandomHistoricalDate() { var startDate = new Date (2000, 0, 1); // 2000 年 1 月 1 日 var endDate = new Date (); // 今天 var historicalDate = randomDate(startDate, endDate); printl ("随机历史事件日期:" + formatDate (historicalDate, "yyyy 年 MM 月 dd 日")); return historicalDate; }
| 生成 2000 年至今的随机历史事件日期,使用中文格式输出
|
类别 | 详情说明 | 函数名称 | randomColor | 方法功能 | 生成随机颜色值 | 方法签名 | String randomColor() | 返回值 | String(十六进制颜色值,格式为 #RRGGBB) | 参数 | 无 | | | 函数名称 | randomRGBColor | 方法功能 | 生成随机 RGB 颜色值 | 方法签名 | Object randomRGBColor() | 返回值 | Object(包含 r、g、b 属性的对象,每个属性值范围为 0-255) | 参数 | 无 | | | 函数名称 | randomRGBAColor | 方法功能 | 生成随机 RGBA 颜色值 | 方法签名 | Object randomRGBAColor() | 返回值 | Object(包含 r、g、b、a 属性的对象,r/g/b 范围 0-255,a 范围 0.00-1.00) | 参数 | 无 | | | 函数名称 | randomHSLColor | 方法功能 | 生成随机 HSL 颜色值 | 方法签名 | Object randomHSLColor() | 返回值 | Object(包含 h、s、l 属性的对象,h 范围 0-360,s/l 范围 0-100%) | 参数 | 无 | 使用示例表使用示例表应用场景 | 示例代码 | 说明 | 基本随机十六进制颜色生成 | var randomHexColor = randomColor();
printl ("生成随机十六进制颜色:" + randomHexColor); | 生成格式为 #RRGGBB 的随机十六进制颜色值 | 基本随机 RGB 颜色生成 | var randomRGB = randomRGBColor();
printl ("生成随机 RGB 颜色: rgb (" + randomRGB.r + "," + randomRGB.g + "," + randomRGB.b + ")"); | 生成包含 r、g、b 属性的 RGB 颜色对象,并以rgb(r, g, b) 格式输出 | 基本随机 RGBA 颜色生成 | var randomRGBA = randomRGBAColor();
printl ("生成随机 RGBA 颜色: rgba (" + randomRGBA.r + "," + randomRGBA.g + "," + randomRGBA.b + "," + randomRGBA.a + ")"); | 生成包含 r、g、b、a 属性的 RGBA 颜色对象,并以rgba(r, g, b, a) 格式输出 | 基本随机 HSL 颜色生成 | var randomHSL = randomHSLColor();
printl ("生成随机 HSL 颜色: hsl (" + randomHSL.h + "," + randomHSL.s + "%," + randomHSL.l + "%)"); | 生成包含 h、s、l 属性的 HSL 颜色对象,并以hsl(h, s%, l%) 格式输出 | 多次生成随机颜色 | printl ("连续生成 5 个随机颜色:");
for (var i = 0; i < 5; i++) {
printl ("随机颜色" + (i+1) + ":" + randomColor ());
} | 循环生成 5 个随机十六进制颜色值并输出 | 随机设置界面主题色 | function setRandomThemeColor() {
var themeColor = randomColor();
printl ("设置随机主题色:" + themeColor);
// 在实际应用中,可以将这个颜色应用到界面元素上
return themeColor;
} | 生成随机十六进制颜色作为界面主题色 | 随机生成图表颜色 | function generateChartColors(count) {
var colors = [];
for (var i = 0; i < count; i++) {
colors.push(randomColor());
}
printl ("生成图表颜色:" + colors.join (","));
return colors;
} | 根据传入的数量,生成对应个数的随机十六进制颜色数组(用于图表系列配色) | 随机生成按钮样式(背景 + 文字色) | function generateRandomButtonStyles() {
var bgColor = randomColor();
var textColor = randomColor();
printl ("按钮背景色:" + bgColor + ", 文字颜色:" + textColor);
// 在实际应用中,可以用于设置按钮样式
return {backgroundColor: bgColor, textColor: textColor};
} | 生成随机的按钮背景色和文字色组合,返回样式对象 | 随机生成渐变色 | function generateRandomGradient() {
var color1 = randomColor();
var color2 = randomColor();
var gradient = "linear-gradient(45deg, " + color1 + ", " + color2 + ")";
printl ("生成随机渐变:" + gradient);
return gradient;
} | 生成 45 度角的线性渐变色,使用两个随机十六进制颜色作为渐变起点和终点 | 随机生成半透明颜色 | function generateRandomTransparentColor() {
var baseColor = randomColor();
var alpha = (Math.random () * 0.8 + 0.2).toFixed (2); // 0.2-1.0 之间的透明度
var transparentColor = baseColor + Math.floor(alpha * 255).toString(16);
printl ("基础颜色:" + baseColor + ", 透明度:" + alpha + ", 半透明颜色:" + transparentColor);
return transparentColor;
} | 基于随机十六进制颜色,生成透明度 0.2-1.0 的半透明颜色(格式 #RRGGBBAA) | 随机生成柔和颜色(低饱和度) | function generateRandomSoftColor() {
var h = Math.floor(Math.random() * 361);
var s = Math.floor (Math.random () * 31); // 0-30% 饱和度,确保颜色柔和
var l = Math.floor (Math.random () * 41) + 30; // 30-70% 亮度,确保颜色不会太暗或太亮
var hsl = "hsl(" + h + ", " + s + "%, " + l + "%)";
printl ("生成随机柔和颜色:" + hsl);
return hsl;
} | |
📌随机UUID生成函数 函数说明表类别 | 详情说明 | 函数名称 | randomUUID | 方法功能 | 生成随机 UUID(通用唯一识别码) | 方法签名 | String randomUUID() | 返回值 | String(UUID 字符串,格式为 xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx) | 参数 | 无 | | | 函数名称 | simpleUUID | 方法功能 | 生成简单的 UUID(只包含数字和字母) | 方法签名 | String simpleUUID() | 返回值 | String(32 位 UUID 字符串) | 参数 | 无 | 使用示例表应用场景 | 示例代码 | 说明 | 标准 UUID 生成示例 | var uuid = randomUUID();
printl ("生成标准 UUID:" + uuid); | 生成符合标准格式(带连字符)的 UUID 字符串 | 简单 UUID 生成示例 | var simpleUuid = simpleUUID();
printl ("生成简单 UUID:" + simpleUuid); | 生成 32 位无连字符的简单 UUID 字符串(仅包含数字和字母) | 多次生成随机 UUID 示例 | printl ("连续生成 5 个随机 UUID:");
for (var i = 0; i < 5; i++) {
printl(" UUID " + (i+1) + ": " + randomUUID());
} | 循环生成 5 个标准格式的 UUID 并输出 | 生成设备唯一标识符 | function generateDeviceId() {
var deviceId = randomUUID();
printl ("生成设备 ID:" + deviceId);
return deviceId;
} | 使用标准 UUID 生成设备唯一标识符 | 生成会话 ID | function generateSessionId() {
var sessionId = randomUUID();
printl ("生成会话 ID:" + sessionId);
return sessionId;
} | 使用标准 UUID 生成用户会话唯一标识 | 生成事务 ID | function generateTransactionId() {
var transactionId = simpleUUID();
printl ("生成事务 ID:" + transactionId);
return transactionId;
} | 使用简单 UUID 生成交易事务唯一标识 | 生成 API 请求 ID | function generateRequestId() {
var requestId = randomUUID();
printl ("生成请求 ID:" + requestId);
return requestId;
} | 使用标准 UUID 生成 API 请求唯一标识,用于追踪请求 | 生成文件唯一标识符 | function generateFileId() {
var fileId = simpleUUID();
printl ("生成文件 ID:" + fileId);
return fileId;
} | 使用简单 UUID 生成文件唯一标识,适合作为文件名或存储标识 | 生成用户临时标识符 | function generateTempUserId() {
var tempUserId = randomUUID();
printl ("生成临时用户 ID:" + tempUserId);
return tempUserId;
} | 使用标准 UUID 生成未登录用户的临时标识 | 生成订单号(带 UUID) | function generateOrderNumber() {
var timestamp = new Date().getTime();
var uuidPart = simpleUUID().substr(0, 8);
var orderNumber = "ORD" + timestamp + uuidPart.toUpperCase();
printl ("生成订单号:" + orderNumber);
return orderNumber;
} | 结合时间戳和简单 UUID 前 8 位生成订单号,兼具唯一性和时间关联性 | 生成随机密码重置令牌 | function generateResetToken() {
var resetToken = randomUUID();
printl ("生成密码重置令牌:" + resetToken);
return resetToken;
} | 使用标准 UUID 生成密码重置链接中的唯一令牌,确保安全性 |
📌随机密码 / 验证码 [color=var(--md-box-samantha-deep-text-color) !important]随机密码 / 验证码生成函数及使用说明[color=var(--md-box-samantha-deep-text-color) !important]函数说明表类别 | 详情说明 | | 函数名称 | randomPassword | | 方法功能 | 生成指定长度的随机密码,可自定义包含的字符类型 | | 方法签名 | String randomPassword(Int32 length, Boolean includeUppercase, Boolean includeLowercase, Boolean includeNumbers, Boolean includeSymbols) | | 返回值 | String(生成的随机密码) | | 参数 | - Int32 length:密码长度
- Boolean includeUppercase:是否包含大写字母
- Boolean includeLowercase:是否包含小写字母
- Boolean includeNumbers:是否包含数字
- Boolean includeSymbols:是否包含特殊符号(!@#$%^&*()_+-=[]{} | ;:,.<>?) | | | | 函数名称 | randomVerificationCode | | 方法功能 | 生成指定长度的随机验证码,默认包含数字和大写字母 | | 方法签名 | String randomVerificationCode(Int32 length) | | 返回值 | String(生成的随机验证码) | | 参数 | - Int32 length:验证码长度 | | | | | 函数名称 | randomNumericCode | | 方法功能 | 生成指定长度的纯数字验证码 | | 方法签名 | String randomNumericCode(Int32 length) | | 返回值 | String(生成的纯数字验证码) | | 参数 | - Int32 length:验证码长度 | | | | | 函数名称 | randomAlphaCode | | 方法功能 | 生成指定长度的纯字母验证码,支持区分大小写 | | 方法签名 | String randomAlphaCode(Int32 length, Boolean caseSensitive) | | 返回值 | String(生成的纯字母验证码) | | 参数 | - Int32 length:验证码长度
- Boolean caseSensitive:是否区分大小写(true = 区分大小写,false = 仅大写字母) | | [color=var(--md-box-samantha-deep-text-color) !important]使用示例表应用场景 | 示例代码 | 说明 | 生成复杂密码(12 位,全字符类型) | var password1 = randomPassword(12, true, true, true, true);
printl ("生成 12 位复杂密码:" + password1); | 生成包含大写字母、小写字母、数字、特殊符号的 12 位复杂密码 | 生成字母数字密码(8 位) | var password2 = randomPassword(8, true, true, true, false);
printl ("生成 8 位字母数字密码:" + password2); | 生成包含大小写字母、数字(无特殊符号)的 8 位密码 | 生成小写字母数字密码(6 位) | var password3 = randomPassword(6, false, true, true, false);
printl ("生成 6 位小写字母数字密码:" + password3); | 生成包含小写字母、数字(无大写、无特殊符号)的 6 位密码 | 生成 6 位混合验证码(数字 + 大写) | var verificationCode1 = randomVerificationCode(6);
printl ("生成 6 位验证码:" + verificationCode1); | 生成包含数字和大写字母的 6 位通用验证码 | 生成 4 位混合验证码(数字 + 大写) | var verificationCode2 = randomVerificationCode(4);
printl ("生成 4 位验证码:" + verificationCode2); | 生成包含数字和大写字母的 4 位通用验证码 | 生成 6 位纯数字验证码 | var numericCode = randomNumericCode(6);
printl ("生成 6 位纯数字验证码:" + numericCode); | 生成仅含数字的 6 位验证码(常用于短信、语音验证) | 生成 6 位纯大写字母验证码 | var alphaCode1 = randomAlphaCode(6, false);
printl ("生成 6 位大写字母验证码:" + alphaCode1); | 生成仅含大写字母的 6 位验证码(不区分大小写) | 生成 6 位大小写混合字母验证码 | var alphaCode2 = randomAlphaCode(6, true);
printl ("生成 6 位大小写混合字母验证码:" + alphaCode2); | 生成包含大小写字母的 6 位验证码(区分大小写) | 连续生成 3 个 10 位字母数字密码 | printl ("连续生成 3 个随机密码:");
for (var i = 0; i < 3; i++) {
printl ("密码" + (i+1) + ":" + randomPassword (10, true, true, true, false));
} | 循环生成 3 个包含大小写字母、数字的 10 位密码 | 用户注册初始密码生成 | function generateInitialPassword() {
var password = randomPassword(10, true, true, true, false);
printl ("生成初始密码:" + password);
return password;
} | 生成 10 位字母数字组合的初始密码(用于新用户注册默认密码) | 短信验证码生成 | function generateSMSCode() {
var smsCode = randomNumericCode(6);
printl ("生成短信验证码:" + smsCode);
return smsCode;
} | 生成 6 位纯数字短信验证码(符合主流平台短信验证格式) | 邮箱验证令牌生成 | function generateEmailVerificationToken() {
var token = randomVerificationCode(32);
printl ("生成邮箱验证令牌:" + token);
return token;
} | 生成 32 位数字 + 大写字母的邮箱验证令牌(用于邮箱激活链接) | 临时访问密码生成 | function generateTempPassword() {
var tempPassword = randomPassword(8, true, true, true, false);
printl ("生成临时密码:" + tempPassword);
return tempPassword;
} | 生成 8 位字母数字组合的临时密码(用于密码找回临时登录) | 图形验证码文本生成 | function generateCaptchaText() {
var captcha = randomAlphaCode(4, true);
printl ("生成图形验证码:" + captcha);
return captcha;
} | 生成 4 位大小写混合字母的图形验证码文本(用于网页图形验证) | API 密钥生成 | function generateAPIKey() {
var apiKey = randomPassword(32, true, true, true, false);
printl ("生成 API 密钥:" + apiKey);
return apiKey;
} | 生成 32 位字母数字组合的 API 密钥(用于接口访问身份验证) | 安全令牌生成 | function generateSecurityToken() {
var token = randomVerificationCode(64);
printl ("生成安全令牌:" + token);
return token;
} | 生成 64 位数字 + 大写字母的安全令牌(用于高安全性场景身份校验) | 随机盐值生成 | function generateSalt() {
var salt = randomPassword(16, true, true, true, true);
printl ("生成随机盐值:" + salt);
return salt;
} | 生成 16 位包含大小写、数字、特殊符号的盐值(用于密码加密存储) |
📌随机数组排序(洗牌算法) [color=var(--md-box-samantha-deep-text-color) !important]函数说明表类别 | 详情说明 | 函数名称 | shuffle | 方法功能 | 使用Fisher-Yates 洗牌算法对数组进行随机排序,生成新数组(不修改原数组) | 方法签名 | Array shuffle(Array array) | 返回值 | Array(随机排序后的新数组) | 参数 | - Array array:需要随机排序的源数组 | | | 函数名称 | shuffleInPlace | 方法功能 | 使用Fisher-Yates 洗牌算法对数组进行原地随机排序(直接修改原数组) | 方法签名 | Void shuffleInPlace(Array array) | 返回值 | Void(无返回值,排序后结果直接作用于输入数组) | 参数 | - Array array:需要随机排序的源数组(将被直接修改) | [color=var(--md-box-samantha-deep-text-color) !important]使用示例表应用场景 | 示例代码 | 说明 | 基本洗牌示例(不修改原数组) | var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
printl ("原始数组:" + numbers.join (","));
var shuffledNumbers = shuffle(numbers);
printl ("洗牌后数组:" + shuffledNumbers.join (","));
printl ("原数组未变:" + numbers.join (",")); | 通过shuffle 生成新数组,原数组numbers 保持初始顺序,适合需保留源数据的场景 | 原地洗牌示例(修改原数组) | var colors = ["红色", "绿色", "蓝色", "黄色", "紫色", "橙色"];
printl ("原始颜色数组:" + colors.join (","));
shuffleInPlace(colors);
printl ("原地洗牌后:" + colors.join (",")); | 通过shuffleInPlace 直接修改原数组colors ,无需额外存储新数组,适合内存敏感场景 | 多次洗牌示例 | var cards = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
printl ("原始牌组:" + cards.join (","));
printl ("多次洗牌结果:");
for (var i = 0; i < 3; i++) {
var shuffledCards = shuffle(cards);
printl ("第" + (i+1) + "次洗牌:" + shuffledCards.join (","));
} | 对同一源数组(牌组)多次调用shuffle ,每次生成独立的随机排序结果,模拟真实洗牌场景 | 随机播放列表 | function shufflePlaylist(songs) {
printl ("原始播放列表:" + songs.join ("->"));
var shuffledSongs = shuffle(songs);
printl ("随机播放列表:" + shuffledSongs.join ("->"));
return shuffledSongs;
}
printl ("播放列表随机排序:");
var playlist = ["歌曲 1", "歌曲 2", "歌曲 3", "歌曲 4", "歌曲 5"];
shufflePlaylist(playlist); | 打乱歌曲顺序生成随机播放列表,保留原始列表不被修改 | 随机抽取题目 | function randomizeQuestions(questions) {
printl ("原始题目顺序:" + questions.join (","));
var randomizedQuestions = shuffle(questions);
printl ("随机题目顺序:" + randomizedQuestions.join (","));
return randomizedQuestions;
}
printl ("题目随机排序:");
var examQuestions = ["选择题 1", "选择题 2", "填空题 1", "填空题 2", "简答题"];
randomizeQuestions(examQuestions); | 打乱题目顺序,用于考试、问卷等场景,避免固定顺序影响结果 | 随机分配任务 | function assignTasksRandomly(tasks, people) {
printl ("原始任务列表:" + tasks.join (","));
printl ("参与人员列表:" + people.join (","));
var shuffledTasks = shuffle(tasks);
var assignments = {};
for (var i = 0; i < people.length; i++) {
var person = people;
var taskIndex = i % shuffledTasks.length;
assignments[person] = shuffledTasks[taskIndex];
}
printl ("随机任务分配结果:");
for (var person in assignments) {
printl(" " + person + " -> " + assignments[person]);
}
return assignments;
}
printl ("任务随机分配:");
var taskList = ["任务 A", "任务 B", "任务 C", "任务 D"];
var teamMembers = ["张三", "李四", "王五", "赵六"];
assignTasksRandomly(taskList, teamMembers); | 先打乱任务顺序,再按人员列表分配任务,实现公平随机的任务分发 | 随机抽奖 | function lottery(participants, prizeCount) {
printl ("参与抽奖人员:" + participants.join (","));
printl ("奖品数量:" + prizeCount);
var shuffledParticipants = shuffle(participants);
var winners = shuffledParticipants.slice(0, prizeCount);
printl ("中奖人员:" + winners.join (","));
return winners;
}
printl ("随机抽奖:");
var participants = ["用户 A", "用户 B", "用户 C", "用户 D", "用户 E", "用户 F", "用户 G"];
lottery(participants, 3); | 打乱参与人员顺序,取前 N 名作为中奖者,确保抽奖公平性 | 随机测试数据生成 | function generateRandomTestData(items) {
printl ("原始测试数据:" + items.join (","));
var testDataSets = [];
for (var i = 0; i < 5; i++) {
var shuffledData = shuffle(items);
testDataSets.push(shuffledData);
printl ("测试数据集" + (i+1) + ":" + shuffledData.join (","));
}
return testDataSets;
}
printl ("随机测试数据生成:");
var testData = ["数据 1", "数据 2", "数据 3", "数据 4", "数据 5"];
generateRandomTestData(testData); | 生成多组不同顺序的测试数据,用于验证算法对数据顺序的鲁棒性 | 游戏地图随机化 | function randomizeGameMap(rooms) {
printl ("原始房间顺序:" + rooms.join ("->"));
var randomizedRooms = shuffle(rooms);
printl ("随机房间顺序:" + randomizedRooms.join ("->"));
return randomizedRooms;
}
printl ("游戏地图随机化:");
var gameRooms = ["起始房间", "怪物房间", "宝藏房间", "商店房间", "Boss 房间"];
randomizeGameMap(gameRooms); | 打乱游戏房间顺序,生成随机地图路径,提升游戏可玩性 |
多个例子全部集合在一起: - /**
- * 随机数工具类 - 整合所有随机相关功能
- * 包含:基础随机值、坐标、数组、日期、颜色、UUID、密码验证码、洗牌算法等
- * 交流QQ群:711841924(苹果内测群一)、528816639
- */
- const RandomUtils = {
- // ========================== 1. 基础随机值生成 ==========================
- /**
- * LtUqFOGkc6 - 生成指定范围的随机小数
- * @param {number} min - 最小值(包含)
- * @param {number} max - 最大值(包含)
- * @returns {number} 随机小数
- */
- LtUqFOGkc6(min, max) {
- return Math.random() * (max - min) + min;
- },
- /**
- * randInt / WBJqf91s7J - 生成指定范围的随机整数(两个函数功能一致,统一实现)
- * @param {number} min - 最小值(包含)
- * @param {number} max - 最大值(包含)
- * @returns {number} 随机整数
- */
- randInt(min, max) {
- // 修正:确保参数是整数并正确处理边界
- min = Math.ceil(min);
- max = Math.floor(max);
- return Math.floor(Math.random() * (max - min + 1)) + min;
- },
- WBJqf91s7J: function (min, max) { // 兼容原命名
- return this.randInt(min, max);
- },
- /**
- * randBool - 生成 50% 概率的随机布尔值
- * @returns {boolean} true/false
- */
- randBool() {
- return Math.random() < 0.5;
- },
- /**
- * randBoolWithProbability - 按指定概率生成布尔值
- * @param {number} probability - 返回 true 的概率(0.0 ~ 1.0)
- * @returns {boolean} 按概率生成的布尔值
- */
- randBoolWithProbability(probability) {
- // 边界值处理:确保概率在合法范围
- probability = Math.max(0, Math.min(1, probability));
- return Math.random() < probability;
- },
- /**
- * GQGqcAlZv2 - 生成指定长度的随机字符(字母+数字)
- * @param {number} length - 字符长度(正整数)
- * @returns {string} 随机字符串
- */
- GQGqcAlZv2(length) {
- if (length <= 0) return "";
- const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- let result = "";
- for (let i = 0; i < length; i++) {
- const randomIndex = this.randInt(0, chars.length - 1);
- result += chars[randomIndex];
- }
- return result;
- },
- // ========================== 2. 坐标与区域随机 ==========================
- /**
- * randClickPosition - 在指定区域内生成随机点击坐标
- * @param {number} left - 左边界
- * @param {number} top - 上边界
- * @param {number} right - 右边界
- * @param {number} bottom - 下边界
- * @returns {Object} 包含 x/y 坐标的对象
- */
- randClickPosition(left, top, right, bottom) {
- const x = this.LtUqFOGkc6(left, right);
- const y = this.LtUqFOGkc6(top, bottom);
- return { x: Number(x.toFixed(2)), y: Number(y.toFixed(2)) }; // 保留2位小数,避免精度冗余
- },
- // ========================== 3. 数组随机操作 ==========================
- /**
- * randArrayElement / randChoice - 从数组随机选择1个元素(兼容原命名)
- * @param {Array} arr - 源数组
- * @returns {any|null} 随机元素(数组为空时返回null)
- */
- randArrayElement(arr) {
- if (!Array.isArray(arr) || arr.length === 0) return null;
- const index = this.randInt(0, arr.length - 1);
- return arr[index];
- },
- randChoice: function (arr) {
- return this.randArrayElement(arr);
- },
- /**
- * randArrayElements - 从数组随机选择指定数量的元素(不重复)
- * @param {Array} arr - 源数组
- * @param {number} count - 选择数量
- * @returns {Array} 随机元素数组(数量不足时返回所有元素)
- */
- randArrayElements(arr, count) {
- if (!Array.isArray(arr) || arr.length === 0) return [];
- // 复制数组避免修改原数组,再用洗牌算法截取
- const copyArr = [...arr];
- this.shuffleInPlace(copyArr);
- return copyArr.slice(0, Math.min(count, arr.length));
- },
- /**
- * shuffle - Fisher-Yates洗牌算法(生成新数组,不修改原数组)
- * @param {Array} arr - 源数组
- * @returns {Array} 随机排序后的新数组
- */
- shuffle(arr) {
- if (!Array.isArray(arr)) return [];
- const copyArr = [...arr];
- this.shuffleInPlace(copyArr);
- return copyArr;
- },
- /**
- * shuffleInPlace - Fisher-Yates洗牌算法(原地排序,修改原数组)
- * @param {Array} arr - 源数组(将被直接修改)
- */
- shuffleInPlace(arr) {
- if (!Array.isArray(arr)) return;
- for (let i = arr.length - 1; i > 0; i--) {
- const j = this.randInt(0, i);
- // 交换元素
- [arr[i], arr[j]] = [arr[j], arr[i]];
- }
- },
- // ========================== 4. 日期随机生成 ==========================
- /**
- * formatDate - 日期格式化工具
- * @param {Date} date - 日期对象
- * @param {string} format - 格式(如 "yyyy-MM-dd"、"yyyy/MM/dd HH:mm:ss")
- * @returns {string} 格式化后的日期字符串
- */
- formatDate(date, format) {
- if (!(date instanceof Date)) return "";
- const pad = (num) => num.toString().padStart(2, "0"); // 补零函数
- return format.replace(/yyyy/g, date.getFullYear())
- .replace(/MM/g, pad(date.getMonth() + 1)) // 月份0-11,需+1
- .replace(/dd/g, pad(date.getDate()))
- .replace(/HH/g, pad(date.getHours()))
- .replace(/mm/g, pad(date.getMinutes()))
- .replace(/ss/g, pad(date.getSeconds()))
- .replace(/SSS/g, pad(date.getMilliseconds()).padStart(3, "0"));
- },
- /**
- * randomDate - 生成指定范围的随机日期对象
- * @param {Date} startDate - 开始日期
- * @param {Date} endDate - 结束日期
- * @returns {Date} 随机日期
- */
- randomDate(startDate, endDate) {
- if (!(startDate instanceof Date) || !(endDate instanceof Date)) {
- throw new Error("参数必须是Date对象");
- }
- const startTime = startDate.getTime();
- const endTime = endDate.getTime();
- const randomTime = this.LtUqFOGkc6(startTime, endTime);
- return new Date(randomTime);
- },
- /**
- * randomDateString - 生成指定格式的随机日期字符串
- * @param {Date} startDate - 开始日期
- * @param {Date} endDate - 结束日期
- * @param {string} format - 日期格式
- * @returns {string} 格式化后的随机日期
- */
- randomDateString(startDate, endDate, format) {
- const randomDate = this.randomDate(startDate, endDate);
- return this.formatDate(randomDate, format);
- },
- // ========================== 5. 颜色随机生成 ==========================
- /**
- * randomColor - 生成随机十六进制颜色(#RRGGBB)
- * @returns {string} 十六进制颜色值
- */
- randomColor() {
- const letters = "0123456789ABCDEF";
- let color = "#";
- for (let i = 0; i < 6; i++) {
- color += letters[this.randInt(0, 15)];
- }
- return color;
- },
- /**
- * randomRGBColor - 生成随机RGB颜色
- * @returns {Object} { r: 0-255, g: 0-255, b: 0-255 }
- */
- randomRGBColor() {
- return {
- r: this.randInt(0, 255),
- g: this.randInt(0, 255),
- b: this.randInt(0, 255)
- };
- },
- /**
- * randomRGBAColor - 生成随机RGBA颜色
- * @returns {Object} { r: 0-255, g: 0-255, b: 0-255, a: 0.00-1.00 }
- */
- randomRGBAColor() {
- return {
- ...this.randomRGBColor(),
- a: Number(this.LtUqFOGkc6(0, 1).toFixed(2))
- };
- },
- /**
- * randomHSLColor - 生成随机HSL颜色
- * @returns {Object} { h: 0-360, s: 0-100%, l: 0-100% }
- */
- randomHSLColor() {
- return {
- h: this.randInt(0, 360),
- s: `${this.randInt(0, 100)}%`,
- l: `${this.randInt(0, 100)}%`
- };
- },
- /**
- * generateRandomSoftColor - 生成低饱和度柔和颜色(HSL格式)
- * @returns {string} HSL颜色字符串(如 "hsl(120, 20%, 50%)")
- */
- generateRandomSoftColor() {
- const h = this.randInt(0, 360);
- const s = this.randInt(0, 30); // 0-30% 饱和度(柔和)
- const l = this.randInt(30, 70); // 30-70% 亮度(不暗不亮)
- return `hsl(${h}, ${s}%, ${l}%)`;
- },
- // ========================== 6. UUID 生成 ==========================
- /**
- * randomUUID - 生成标准UUID(格式:xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx)
- * @returns {string} 标准UUID字符串
- */
- randomUUID() {
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
- const r = this.randInt(0, 15); // 修正:使用整数随机数而不是小数
- const v = c === 'x' ? r : (r & 0x3 | 0x8); // y位固定为 0100 或 1000
- return v.toString(16);
- });
- },
- /**
- * simpleUUID - 生成32位简化UUID(无连字符,仅字母+数字)
- * @returns {string} 32位UUID字符串
- */
- simpleUUID() {
- return this.randomUUID().replace(/-/g, '');
- },
- // ========================== 7. 密码与验证码生成 ==========================
- /**
- * randomPassword - 自定义复杂度的随机密码
- * @param {number} length - 密码长度
- * @param {boolean} includeUppercase - 是否包含大写字母
- * @param {boolean} includeLowercase - 是否包含小写字母
- * @param {boolean} includeNumbers - 是否包含数字
- * @param {boolean} includeSymbols - 是否包含特殊符号(!@#$%^&*()_+-=[]{};:,.<>?)
- * @returns {string} 随机密码
- */
- randomPassword(length, includeUppercase, includeLowercase, includeNumbers, includeSymbols) {
- if (length <= 0) return "";
- // 定义字符集
- let chars = "";
- if (includeUppercase) chars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- if (includeLowercase) chars += "abcdefghijklmnopqrstuvwxyz";
- if (includeNumbers) chars += "0123456789";
- if (includeSymbols) chars += "!@#$%^&*()_+-=[]{};:,.<>?";
- // 兜底:若未选任何字符集,默认字母+数字
- if (chars === "") chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
-
- let password = "";
- for (let i = 0; i < length; i++) {
- password += chars[this.randInt(0, chars.length - 1)];
- }
- return password;
- },
- /**
- * randomVerificationCode - 混合验证码(数字+大写字母)
- * @param {number} length - 验证码长度
- * @returns {string} 混合验证码
- */
- randomVerificationCode(length) {
- // 修正:根据函数描述,应该是数字+大写字母
- if (length <= 0) return "";
- const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
- let result = "";
- for (let i = 0; i < length; i++) {
- result += chars[this.randInt(0, chars.length - 1)];
- }
- return result;
- },
- /**
- * randomNumericCode - 纯数字验证码
- * @param {number} length - 验证码长度
- * @returns {string} 纯数字验证码
- */
- randomNumericCode(length) {
- if (length <= 0) return "";
- const chars = "0123456789";
- let result = "";
- for (let i = 0; i < length; i++) {
- result += chars[this.randInt(0, chars.length - 1)];
- }
- return result;
- },
- /**
- * randomAlphaCode - 纯字母验证码
- * @param {number} length - 验证码长度
- * @param {boolean} caseSensitive - 是否区分大小写(true=混合,false=仅大写)
- * @returns {string} 纯字母验证码
- */
- randomAlphaCode(length, caseSensitive) {
- if (length <= 0) return "";
- let chars = "";
- if (caseSensitive) {
- // 区分大小写,混合大小写字母
- chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
- } else {
- // 不区分大小写,仅大写字母
- chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- }
-
- let result = "";
- for (let i = 0; i < length; i++) {
- result += chars[this.randInt(0, chars.length - 1)];
- }
- return result;
- },
- // ========================== 8. 综合模拟 ==========================
- /**
- * simulateRandomUserActions - 模拟用户随机操作(点击/滑动/输入/等待)
- */
- simulateRandomUserActions() {
- printl("=== 模拟用户随机操作 ==="); // 修正:使用printl而不是console.log
- const actions = ["点击", "滑动", "输入", "等待"];
- const action = this.randArrayElement(actions);
- switch (action) {
- case "点击":
- const clickPos = this.randClickPosition(0, 0, 1920, 1080); // 假设屏幕1920x1080
- printl("随机点击屏幕位置: (" + clickPos.x + ", " + clickPos.y + ")");
- // 实际项目可添加:hid.click(clickPos.x, clickPos.y);
- break;
- case "滑动":
- const startPos = this.randClickPosition(100, 100, 400, 600);
- const endPos = this.randClickPosition(100, 100, 400, 600);
- printl("随机滑动: (" + startPos.x + ", " + startPos.y + ") → (" + endPos.x + ", " + endPos.y + ")");
- // 实际项目可添加:hid.swip(startPos.x, startPos.y, endPos.x, endPos.y, 500);
- break;
- case "输入":
- const texts = ["Hello", "AIWork", "Automation", "RandomTest"];
- const inputText = this.randArrayElement(texts);
- printl("随机输入文本: " + inputText);
- // 实际项目可添加:hid.inputSimple(inputText);
- break;
- case "等待":
- const waitTime = this.randInt(1000, 3000);
- printl("随机等待: " + waitTime + "ms");
- // 实际项目可添加:sleep.millisecond(waitTime);
- break;
- }
- },
- /**
- * simulateRandomError - 模拟随机错误(10%概率)
- * @returns {boolean} 操作是否成功(true=成功,false=错误)
- */
- simulateRandomError() {
- if (this.randBoolWithProbability(0.1)) {
- printl("[错误模拟] 操作失败(10%概率触发)");
- return false;
- }
- printl("[错误模拟] 操作成功");
- return true;
- },
- /**
- * lottery - 随机抽奖(公平洗牌后取前N名)
- * @param {Array} participants - 参与人员列表
- * @param {number} prizeCount - 奖品数量
- * @returns {Array} 中奖人员列表
- */
- lottery(participants, prizeCount) {
- printl("=== 随机抽奖(参与人数:" + participants.length + ",奖品数:" + prizeCount + ")===");
- const shuffled = this.shuffle(participants);
- const winners = shuffled.slice(0, prizeCount);
- printl("中奖人员: " + winners.join(", "));
- return winners;
- },
-
- /**
- * randNumber - 生成指定范围的随机整数(根据文档中的使用方式)
- * @param {number} min - 最小值
- * @param {number} max - 最大值
- * @returns {number} 随机整数
- */
- randNumber(min, max) {
- // 根据文档中的使用方式实现
- return this.randInt(min, max);
- }
- };
- // ========================== 测试示例:所有功能的使用演示 ==========================
- function testRandomUtils() {
- // 1. 基础随机值测试
- printl("=== 1. 基础随机值测试 ===");
- printl("0-1随机小数: " + RandomUtils.LtUqFOGkc6(0, 1).toFixed(4));
- printl("10-100随机整数: " + RandomUtils.randInt(10, 100));
- printl("50%概率布尔值: " + RandomUtils.randBool());
- printl("30%概率true: " + RandomUtils.randBoolWithProbability(0.3));
- printl("16位随机字符: " + RandomUtils.GQGqcAlZv2(16));
- printl("");
- // 2. 坐标随机测试
- printl("=== 2. 坐标随机测试 ===");
- const clickPos = RandomUtils.randClickPosition(100, 200, 500, 800);
- printl("指定区域随机坐标: " + JSON.stringify(clickPos));
- printl("");
- // 3. 数组随机测试
- printl("=== 3. 数组随机测试 ===");
- const fruits = ["苹果", "香蕉", "橙子", "葡萄", "草莓"];
- printl("随机选1个水果: " + RandomUtils.randArrayElement(fruits));
- printl("随机选3个水果(不重复): " + JSON.stringify(RandomUtils.randArrayElements(fruits, 3)));
- const numbers = [1, 2, 3, 4, 5];
- printl("数组洗牌(新数组): " + JSON.stringify(RandomUtils.shuffle(numbers)));
- printl("原数组是否不变: " + JSON.stringify(numbers)); // [1,2,3,4,5](未修改)
- RandomUtils.shuffleInPlace(numbers);
- printl("数组原地洗牌(修改原数组): " + JSON.stringify(numbers));
- printl("");
- // 4. 日期随机测试
- printl("=== 4. 日期随机测试 ===");
- const startDate = new Date(2020, 0, 1); // 2020-01-01
- const endDate = new Date(2025, 11, 31); // 2025-12-31
- printl("随机生日(1980-2005): " + RandomUtils.randomDateString(
- new Date(1980, 0, 1),
- new Date(2005, 11, 31),
- "yyyy-MM-dd"
- ));
- printl("随机日志时间(近7天): " + RandomUtils.randomDateString(
- new Date(Date.now() - 7 * 24 * 60 * 60 * 1000),
- new Date(),
- "yyyy-MM-dd HH:mm:ss.SSS"
- ));
- printl("");
- // 5. 颜色随机测试
- printl("=== 5. 颜色随机测试 ===");
- printl("随机十六进制颜色: " + RandomUtils.randomColor());
- printl("随机RGB颜色: " + JSON.stringify(RandomUtils.randomRGBColor()));
- printl("随机RGBA颜色: " + JSON.stringify(RandomUtils.randomRGBAColor()));
- printl("随机HSL颜色: " + JSON.stringify(RandomUtils.randomHSLColor()));
- printl("柔和颜色: " + RandomUtils.generateRandomSoftColor());
- printl("");
- // 6. UUID测试
- printl("=== 6. UUID测试 ===");
- printl("标准UUID: " + RandomUtils.randomUUID());
- printl("32位简化UUID: " + RandomUtils.simpleUUID());
- printl("设备ID(UUID): " + RandomUtils.randomUUID());
- printl("");
- // 7. 密码验证码测试
- printl("=== 7. 密码验证码测试 ===");
- printl("12位复杂密码(全字符): " + RandomUtils.randomPassword(12, true, true, true, true));
- printl("6位短信验证码(纯数字): " + RandomUtils.randomNumericCode(6));
- printl("4位图形验证码(大小写): " + RandomUtils.randomAlphaCode(4, true));
- printl("6位混合验证码(数字+大写字母): " + RandomUtils.randomVerificationCode(6));
- printl("");
- // 8. 综合模拟测试
- printl("=== 8. 综合模拟测试 ===");
- RandomUtils.simulateRandomUserActions();
- RandomUtils.simulateRandomError();
- RandomUtils.lottery(["用户A", "用户B", "用户C", "用户D", "用户E"], 2);
- printl("");
- printl("=== 所有测试完成 ===");
- }
- // 执行测试
- testRandomUtils();
复制代码
| |  | |  |
|