快递单号数字生成器

按「前缀 + 12 位主体 + 加权模 10 校验位」生成结构化的测试单号,固定种子可复现,批量生成会自动去重重试。默认用种子 20261108 生成 5 条,打开就能看到结果。这只是测试数据的格式模拟,不是任何真实承运商的编码规则,不能用于寄件、报销或查件。

按裸 Enter 即重算;批量会用集合去重,重复就重试补足。
同一种子同一批结果完全一致,便于测试用例回放。
默认已填 5 种前缀;只允许 1~6 位字母或数字,非法行会具体报错。
校验位复算(权重 3/1 交替,cd=(10-sum%10)%10):
123456789012 -> 0
123456789013 -> 9
123456789021 -> 8
273456789012 -> 2
723456789012 -> 2
273456789012 与 723456789012 校验位相同:相邻两位差 5 交换检不出。
注意:本页只是测试数据的格式模拟,不是任何真实承运商的编码规则,生成的单号不能用于寄件、报销或查件,也不能用来查询真实物流。

提示:数值框按裸 Enter 重算;前缀框按 Ctrl/Cmd + Enter 重新生成。

单号结构与校验位复算对照表

示例主体 / 输入校验位完整单号 / 结论
种子 16201064831076SF6201064831076
种子 27565352457704SF7565352457704
种子 30066092832093JD0066092832093
种子 46490413655535YT6490413655535
种子 51595635926173YT1595635926173
基准主体1234567890120cd=(10-sum%10)%10
改 1 位1234567890139单字符错误可检出
交换相邻1234567890218权重不同可检出
差 5 交换 A2734567890122检不出
差 5 交换 B7234567890122检不出
前缀集合SF/YT/ZTO/JD/EMS—5 种前缀
权重3/1 交替—模 10

对照表是固定种子与校验位复算的参考数据,由页面同一套算法生成;随输入变化的是上方结果区。

使用方法

打开页面时三个输入都已填好默认值:数量 5、种子 20261108、前缀 SF/YT/ZTO/JD/EMS,结果区也直出了这 5 条示例单号,不必先点按钮就能看到一批完整结果。想生成自己的数据,改这三个输入即可:数量与种子是数值框,按裸 Enter 立即重算;前缀是多行文本框,每行写一个前缀,按 Ctrl/Cmd + Enter 重新生成,也可以边改边看结果实时刷新。数量允许 1~100、种子允许 1~2147483647、每行前缀只允许 1~6 位字母或数字;留空、填文字、填小数、超范围、前缀含非法字符,都会给出具体报错,不会静默归零。

结果区分两部分:上方是带 role="alert" 的单号清单,每条给出完整单号、12 位主体与校验位,可一键复制;下方的校验位复算区把 5 组典型主体逐个代入加权模 10 公式,展示检错能力与它的盲区。再往下是 12 行结构与复算对照表,点「加载更多」展开到 14 行,可导出带 BOM 的 CSV 或按 TSV 复制。

开始之前请先接受一条边界:快递单号数字生成器只是测试数据的格式模拟,不是任何真实承运商的编码规则,生成的单号不能用于寄件、报销或查件。把它当「一批长得像单号的字符串」来用,才不会用错地方。

这个工具能解决什么问题

写表单校验、导入脚本、列表分页、边界值测试、演示截图或压测样本时,经常需要一批「格式像单号」的数据。用真实单号既不合适也有隐私风险,纯随机数字又看不出结构,快递单号数字生成器给的是中间那一档:有固定前缀、有连续主体、末尾还有一位能通过公式复算的校验位,既能填满字段宽度,又方便写断言。第二个用途是可复现:固定种子决定整批结果,同一个种子跑多少次都是同一批单号,测试用例失败时可以原样回放,不用把上一次的随机输出先存下来。

本页不做这些事:不生成任何真实可查的运单号、不接承运商接口、不校验你手上单号的真伪、不推断包裹状态,也不联网。前缀里的 SF、YT、ZTO、JD、EMS 只是示例标签,不对应任何公司的真实编码;校验位也只是下面要讲的简单加权模 10,不是任何真实物流体系用的算法。它只回答一个问题:给定数量、种子与前缀集合,按这套结构化规则,一批测试单号长什么样。

与随便生成一串数字相比,结构化编号的价值在于可测:前缀可枚举、主体长度固定、末位可复算。也正因为它只是模拟,别把它接到生产环境当真实单号源。

生成原理与变量

单号是三段拼起来的:前缀 + 12 位主体 + 1 位校验位。前缀从你填的列表里取;主体是 12 位十进制数字,逐位由固定种子随机数产生;末位校验位由主体算出来,不是随机的。完整单号形如 SF6201064831076:前缀 SF、主体 620106483107、校验位 6。

校验位用加权模 10:从主体第 0 位起,偶数位置乘权重 3、奇数位置乘权重 1,逐位求和得 sum,再取 cd = (10 - sum%10)%10。写成式子是 sum = Σ 数字_i × (i%2===0 ? 3 : 1)。例如主体 123456789012 算得校验位 0;把最后一位改成 3,即 123456789013,校验位变成 9,说明单字符错误能被检出;把相邻两位交换成 123456789021,校验位 8,也能检出,因为交换的两位权重不同。

随机数用统一的固定种子发生器:s=(Math.imul(s,1103515245)+12345)&0x7fffffff,每次返回 u = s / 2147483647,取词用 Math.floor(u * len)。生成一条单号时先连续取 12 次得到主体的每一位,第 13 次才用来从前缀列表里挑前缀——这个先后顺序会改变整批结果,把取前缀挪到主体之前就复现不了示例。批量生成还要用集合去重:随机不等于唯一,撞到已生成的单号就丢弃重试,并设 n × 100 次尝试上限,仍凑不够就明确报错,而不是交出一批带重复的结果。

简单加权模 10 有一个经典盲区:当相邻两位数字相差 5 时交换它们,加权和的变化恰好是 10 的倍数,模 10 后不变,于是校验位相同、错误检不出。273456789012 与 723456789012 的校验位都是 2,就是这个原因。Luhn 算法隔位乘 2 再按位求和,检错能力更强;本页只把这一点作为对照说明,不重写 Luhn 页。所有计算都是整数与字符串拼接,没有浮点舍入,主体里的前导零也会原样保留。

完整示例(固定种子 20261108)

数量 5、种子 20261108、前缀列表 SF/YT/ZTO/JD/EMS、主体 12 位,页面算出这 5 条:

校验位复算同样由页面代入公式现算:123456789012 → 0、123456789013 → 9、123456789021 → 8、273456789012 → 2、723456789012 → 2。最后两个校验位相同,正是「差 5 交换检不出」的实证。这些结果都不是写死在页面里的答案;把种子换成别的数、把数量调到 12、把前缀列表改一改再按回车,结果区会整批重算,对照表里的规则数据也来自同一套算法。

想验证「固定种子可复现」,把种子改回 20261108、数量改回 5、前缀还原成默认 5 行再生成一次,会重新得到完全相同的 5 条——点「还原示例」按钮就是做这件事。

输入范围与对照表

对照表默认 12 行,前 5 行是固定种子那批单号的结构拆解,接着 5 行是校验位复算的典型输入与结论,最后 2 行是前缀集合与权重规则;点「加载更多」再展开主体位数 12 位与固定种子 20261108 这两行,共 14 行。四列依次是示例、主体或输入、校验位、完整单号或结论,表可导出带 BOM 的 CSV,Excel 打开不乱码,也可按 TSV 复制粘进表格软件。

这张表是参考数据,不是当前这批生成结果的逐条清单;随输入变化的是上方结果区与校验位复算区。数量 1~100、种子 1~2147483647、前缀每行 1~6 位字母或数字;数量填小数、种子超限、前缀含空格或标点,都会弹出具体报错,方便你一眼看出是哪一项没填对。

结果边界与精度说明

常见问题

生成的单号能拿去寄件或查物流吗?

不能。本页只是测试数据的格式模拟,不是任何真实承运商的编码规则,生成的单号不能用于寄件、报销或查件,也不能用来查询真实物流。它只保证字符串「长得像结构化单号」,与真实运单系统没有任何关系,请勿把它接到生产流程里。

为什么每次点生成结果都一样?

因为默认用的是固定种子 20261108。固定种子让整批结果可复现,方便测试用例回放;把种子改成别的整数,主体序列与前缀选择都会整体改变。想回到示例批次,把种子改回 20261108、数量 5、前缀还原成默认 5 行即可,或点「还原示例」。

末尾那位校验位是怎么算的?

用加权模 10:从主体第 0 位起,偶数位乘 3、奇数位乘 1,逐位求和得 sum,再取 cd=(10-sum%10)%10。比如 123456789012 得 0,改成 123456789013 得 9,所以单个数字写错会被发现。它是本页自定义的简单规则,不是任何真实物流算法。

主体开头的 0 会不会被丢掉?

不会。主体是逐位生成后用字符串拼起来的,不是当数字解析,因此 JD0066092832093 里开头的两个 0 会原样保留。这点对测试固定宽度字段很重要:如果代码把单号整体转成数字,前导零反而会在那一步丢掉,那是调用方的问题,不是本页生成的。

批量生成为什么还要去重?

因为随机不等于唯一。数量大或前缀种类少时,有可能两次生成出完全相同的单号,本页用集合记录已生成的完整单号,撞车就丢弃重试、补到目标条数为止;同时设了 n×100 次尝试上限,真凑不够会明确报错,而不是悄悄交出一批带重复的结果。

为什么说「差 5 交换」检不出?

因为相邻两位的权重是 3 和 1,当这两个数字相差 5 时交换,加权和的变化是 5×(3−1)=10,正好是 10 的倍数,模 10 后不变,校验位也就相同。273456789012 与 723456789012 的校验位都是 2 就是例子。Luhn 隔位乘 2 再按位求和能避开这类盲区,检错更强,本页只做对照不重写。

SF、YT、ZTO、JD、EMS 是真实公司吗?

不是。它们只是默认示例里的 5 个标签字符串,用来演示「前缀可选、可枚举」,不对应任何真实承运商的编码,也不代表这些公司存在某种编号规则。你可以在前缀框里每行写自己的标签,只允许 1~6 位字母或数字,写别的同样能生成。

我填的种子和前缀会被上传吗?

不会。随机数、加权求和与字符串拼接全部在当前浏览器里执行,页面不发起任何网络请求,也不写 Cookie 或 localStorage。你在开发者工具的 Network 面板里反复改种子、点几次生成,面板始终是空的;关掉页面数据也不留存。

相关工具