在线简单随机数生成器核心JS实现(Vue版)

简介: 这是一款基于Vue组合式API的在线随机数生成工具,支持整数/小数、去重、排序、自定义分隔符与小数位等功能。核心流程为:参数输入→校验→生成→排序拼接→统计/复制/下载,兼顾准确性、健壮性与用户体验。

这篇只讲这个工具的功能 JS。整体基于 Vue 组合式 API,核心流程是:

参数输入 -> 参数校验 -> 生成随机数 -> 排序与拼接 -> 统计/复制/下载

在线工具网址:https://see-tool.com/random-number-generator
工具截图:
工具截图.png

1)状态建模:先把可变参数拆清楚

随机数工具看起来简单,但可变项不少:数字类型、是否去重、小数位、排序、分隔符、数量、范围、结果文本、结果数组。实现里把这些都放在响应式状态里,保证按钮点击、统计卡片、结果区同步更新。

const numberType = ref("integer");
const uniqueNumbers = ref("false");
const decimalPlaces = ref(2);
const sortOrder = ref("none");
const separatorSelect = ref("\\n");
const customSeparator = ref("");
const count = ref(10);
const minValue = ref(0);
const maxValue = ref(100);
const result = ref("");
const generatedNumbers = ref([]);

2)参数校验:先拦截,再计算

生成动作入口先做三层校验:

  1. min < max,否则区间无效。
  2. count 限制在 1 ~ 10000
  3. 整数去重模式下,生成数量不能超过区间容量。

第三条是关键,区间容量通过 Math.floor(max) - Math.ceil(min) 计算,避免出现“要求不重复但可选值不够”的情况。

if (minValue.value >= maxValue.value) return;
if (count.value <= 0 || count.value > 10000) return;

if (isUnique && numberType.value === "integer") {
   
  const range = Math.floor(maxValue.value) - Math.ceil(minValue.value);
  if (count.value > range) return;
}

3)随机生成核心:整数与小数两套逻辑

整数模式采用左闭右开区间 [min, max)

randomNum =
  Math.floor(Math.random() * (maxValue.value - minValue.value)) +
  minValue.value;

小数模式先算随机值,再按用户设定小数位做舍入:

randomNum = Math.random() * (maxValue.value - minValue.value) + minValue.value;
randomNum = parseFloat(randomNum.toFixed(decimalPlaces.value));

这样一来,小数展示和复制结果保持一致,不会出现界面显示 2 位、复制出去是长小数的问题。

4)去重实现:Set + 重试上限

去重模式使用 Set 记录已出现数字。每次生成如果命中重复就继续抽,直到拿到新值或达到重试上限。

const usedNumbers = new Set();
let attempts = 0;
const maxAttempts = 10000;

do {
   
  // 生成 randomNum
  attempts++;
} while (isUnique && usedNumbers.has(randomNum) && attempts < maxAttempts);

这个上限是防护措施,避免极端参数下死循环,保证函数一定能结束。

5)结果整理:排序、分隔符、文本输出一次完成

生成完数组后按选项排序,再用分隔符拼接成文本:

if (sortOrder.value === "asc") numbers.sort((a, b) => a - b);
else if (sortOrder.value === "desc") numbers.sort((a, b) => b - a);

generatedNumbers.value = numbers;
result.value = numbers.join(separator);

分隔符支持预设和自定义,并把 \n\t 转为真实换行和制表符,方便直接导出到文档或表格。

6)统计计算:基于结果数组实时派生

统计信息不单独存储,而是由 generatedNumbers 计算得到,包含数量、最小值、最大值、平均值。平均值通过 reduce 计算,展示前统一走格式化函数,避免浮点尾数影响阅读。

const avg = numbers.reduce((sum, num) => sum + num, 0) / numbers.length;

const formatNumber = (num) => {
   
  if (Number.isInteger(num)) return num.toString();
  return parseFloat(num.toFixed(6)).toString();
};

7)交互闭环:复制、下载、清空

这部分是工具可用性的最后一环:

  • 复制:调用 navigator.clipboard.writeText(result)
  • 下载:把结果写入 Blob,生成临时链接触发下载。
  • 清空:重置结果文本和结果数组。
const blob = new Blob([result.value], {
    type: "text/plain;charset=utf-8" });
const url = URL.createObjectURL(blob);

到这里,这个随机数工具的核心 JS 就完整了:先校验参数,再稳定生成,最后把结果以“可读、可复制、可下载”的形式交付给用户。

目录
相关文章
|
1月前
|
人工智能 安全 Linux
从“养虾”到“赚钱”:OpenClaw实战变现手册(阿里云/本地部署配置API+6大盈利路径+避坑指南)
2026年开年,开源AI智能体OpenClaw(昵称“小龙虾”)以现象级姿态席卷全网,GitHub星标数飙升至25.3万+,贡献者超880人,实现10+平台集成,仅用3周就达成了Linux操作系统30年的普及规模。这只“能替人干活的AI员工”不仅重构了办公与生活流程,更催生了“养虾人”这一全新群体——有人靠上门代部署日入2400元,有人靠技能插件售卖月入1.2万+,甚至有创业者靠行业定制化解决方案创收180万美元。
1341 4
|
1月前
|
人工智能 运维 JavaScript
【养虾教程】JVSClaw是什么?JVSClaw与OpenClaw有什么区别?阿里云/本地部署+百炼Coding Plan配置及避坑手册
2026年,AI智能体赛道迎来爆发式增长,OpenClaw(曾用名Clawdbot、Moltbot)凭借开源、高权限、全场景适配的优势成为全民热议的工具,而阿里云推出的JVSClaw则以“云端托管、零运维”的特点快速崛起。很多用户陷入困惑:JVSClaw到底是什么?它和OpenClaw(Clawdbot)有什么本质区别?该选择哪一个部署使用?
2557 6
|
1月前
|
机器学习/深度学习 PyTorch TensorFlow
动态图 vs 静态图:深度学习框架到底该怎么选?别再被“概念战”忽悠了
动态图 vs 静态图:深度学习框架到底该怎么选?别再被“概念战”忽悠了
201 6
|
2月前
|
JavaScript 算法 前端开发
Vue3文本差异对比器实现方案
本文介绍基于Vue 3实现的轻量级文本差异对比工具,核心采用原生JS实现LCS(最长公共子序列)算法,支持行/词/字符三级对比模式,并可忽略空格与大小写。Vue组件负责交互与渲染,Diff逻辑独立封装、动态加载,性能优化采用HTML字符串直出,兼顾效率与灵活性。
135 6
Vue3文本差异对比器实现方案
|
1月前
|
人工智能 Linux API
小白都能看懂的“养龙虾”教程:OpenClaw保姆级部署(阿里云+Windows/Mac/Linux)+ 免费大模型接入+全场景落地指南
2026年,AI智能体领域最火的词非“养龙虾”莫属。这里的“龙虾”,不是餐桌上的海鲜,而是开源AI智能体OpenClaw的中文昵称——因图标形似小龙虾得名,更因“能动手、真干活”的核心能力,成为个人与企业追捧的“专属数字员工”。它彻底打破了传统AI“只说不做”的局限,不再是单纯的聊天工具,而是能直接操控电脑、自主完成任务的自动化引擎,核心价值可概括为“语言指令→AI自主规划→自动操作→完成反馈”的全闭环。
2920 3
|
关系型数据库 MySQL 索引
【MySQL 解析】Hash索引和B+树索引对比分析
【1月更文挑战第11天】【MySQL 解析】Hash索引和B+树索引对比分析
|
1月前
|
JavaScript
简单随机数生成器 在线工具分享
一款轻量在线随机数生成工具(Vue开发),无需注册/下载,输入范围与数量即刻生成整数/小数,支持去重、排序、一键复制。适用于抽奖、点名、分组、测试数据等场景,手机电脑皆可便捷使用。
699 4
|
2月前
|
JSON JavaScript 前端开发
网页源代码查看在线工具 核心JS实现
本文详解“网页源代码查看工具”的核心JS实现:涵盖URL校验、参数组装、请求发送、编码解码、DOM解析提取(源码/文本/表单/链接)及高亮展示等全流程,纯前端驱动,轻量高效。
533 14
|
2月前
|
JavaScript 前端开发 API
HTML编码/解码 核心JS实现
本工具基于纯JS实现HTML编码/解码,支持命名、十进制、十六进制三种实体格式。核心包含状态管理、基础字符强制转义、全量编码开关、换行符处理及原生解码(利用textarea.innerHTML)。无外部依赖,逻辑清晰,开箱即用。
220 1
|
3月前
|
JavaScript 前端开发 API
Vue3项目中集成科学计算器的实现方案
本文介绍Vue3项目集成科学计算器的优雅方案:采用关注点分离架构,通过动态脚本链式加载(jQuery→计算器引擎)、函数桥接机制解决命名冲突,并在生命周期内精准管控资源。
140 6