随机字符

自定义字符集/长度/批量

414 次访问

随机字符串生成器

自定义字符集 + 长度 + 数量 · 批量生成邀请码 / 优惠券 / 临时 ID · CSPRNG

字符集

当前字符集(共 字符):

生成参数

生成结果

点击"生成"按钮开始

使用建议

· 邀请码 / 优惠券:8-12 字符,大写字母 + 数字 + 排除易混 · 例 K3PNQX9B

· API Token / Secret Key:32-64 字符,含大小写 + 数字 + 符号,最大熵值

· 短链接 ID:6-8 字符,大小写 + 数字(Base62)

· HEX 颜色 / 哈希:勾选"仅 HEX"生成 6 或 32 位 HEX 字符串

· 技术:所有随机使用 crypto.getRandomValues(CSPRNG),不可预测、加密强度。前缀不计入随机部分

关于本工具

了解工具定位 · 使用场景 · 对比优势

按自定义字符集、固定长度、指定数量,批量生成随机字符串。开发者测试账号填充、运维生成临时密钥、运营创建优惠码,几秒完成。所有字符在浏览器内即时生成,不经过任何服务器。

使用场景

🔑

密码批量生成

企业 IT 管理员需要为 100 名新员工分配初始密码,要求包含大写字母、数字和特殊符号,且每位密码长度 16 位。手动生成既慢又容易重复。本工具可自定义字符集(排除易混淆字符如 1/l/O/0)、设定固定长度、一次批量生成 100 条不重复密码,直接复制到表格中分发,全程在浏览器本地完成,无数据外传风险。

🎮

游戏账号防撞库

游戏玩家在多个平台注册账号,担心密码雷同导致撞库被盗。本工具支持自定义字符集(只选字母+数字,避开特殊符号以免被游戏登录框拦截),每次生成单条随机字符串作为游戏密码。配合不同平台的固定前缀,即可为每个账号生成唯一密码,且长度、字符组成完全可控。

🧪

测试数据填充

开发者在测试用户注册功能时,需要批量生成 500 条不同格式的「用户名」和「邀请码」。用户名要求 6-12 位小写字母,邀请码要求 8 位大写字母+数字。本工具可分别设置字符集和长度,一次生成两批数据,直接粘贴到测试脚本或数据库中,比手写循环代码快得多,且能确保数据不重复。

📝

验证码样本制作

UI 设计师需要一批样式一致的验证码字符串来填充原型图——要求 4 位纯数字、字体居中、不包含 0/O 等易混淆字符。本工具可精确指定字符集(只留 1-9)、固定长度 4 位,并支持批量生成 20 条,直接复制到设计稿的文本图层中,避免手动编造时的逻辑疏漏。

🔐

临时分享密钥

团队协作时需快速生成一个 32 位随机字符串作为临时 API 访问令牌,要求包含大小写字母、数字和连字符,且每次使用后立即废弃。本工具可自定义字符集(包含连字符 -)和精确长度,单次生成后直接复制到命令行或配置文件中,无需打开密码管理器,适合高频临时场景。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (Online Random Generator)传统方法 (Excel/手动)
数据隐私纯浏览器,零上传,数据不出本地需上传字符集至服务器生成完全本地,但依赖文件安全
处理速度毫秒级生成受网络和服务器负载影响,通常 1-3 秒需手动拖拽公式或编写宏,耗时数分钟
离线可用支持,断网后仍可正常使用不支持,必须联网支持,但需提前安装 Office 软件
批量生成支持,一次生成大量随机字符串通常支持,但数量可能有限制需手动复制公式或编写 VBA,操作繁琐
自定义字符集支持任意字符组合(含中文、特殊符号)通常仅支持字母数字,特殊字符支持有限支持,但需手动输入并处理转义,易出错
使用门槛打开即用,无需安装或注册需访问网站,部分需注册需掌握 Excel 函数(如 RANDBETWEEN、CHAR)或 VBA 编程

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 在「字符集」输入框中填入允许出现的字符,如 abc123
  2. 设置「长度」范围(最小/最大),决定每个随机串的字符数
  3. 调整「数量」滑块或输入数字,指定一次生成多少个随机串
  4. 点击「生成」按钮,结果区立即输出随机字符列表
  5. 点击结果旁的「复制」图标,或框选后 Ctrl+C 复制到剪贴板

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
字符集: abc123 | 长度: 6 | 数量: 1a3b2c1典型场景:从自定义字符集中随机生成一个6位字符串
字符集: 0123456789 | 长度: 4 | 数量: 54827 1903 7654 0382 6190常见用法:批量生成多个纯数字验证码
字符集: ABCDEFGHIJKLMNOPQRSTUVWXYZ | 长度: 1 | 数量: 1Q边界 case:长度为1时,仅从字符集中随机选一个字符
字符集: a | 长度: 10 | 数量: 1aaaaaaaaaa边界 case:字符集只有一个字符,结果必然全是该字符
字符集: abc | 长度: 0 | 数量: 1边界 case:长度为0时,输出空字符串
字符集: 你好世界 | 长度: 4 | 数量: 1界你世好易错 case:支持中文等Unicode字符,结果可能包含任意顺序
字符集: !@#$% | 长度: 3 | 数量: 1@$!易错 case:特殊符号也可作为字符集,结果可能包含转义字符

常见错误对照7 个常踩的坑 · 错误 → 修复

1. 把数字/特殊符号写进字符集

错误
字符集: abc123!@#
修复
字符集: abcdefghijklmnopqrstuvwxyz

字符集里每个字符都会被独立使用。如果写 'abc123','1' 和 '2' 只是普通字符,不是范围。想包含数字应在字符集里明确列出 '0123456789'。

2. 批量生成时每行长度不一致

错误
生成 3 条,长度 10,结果:
abcdefghij
12345678
xyz1234567
修复
生成 3 条,长度 10,结果:
abcdefghij
1234567890
xyz1234567

工具按指定长度生成,若结果里出现不同长度,说明字符集里包含换行符(如复制时带了回车),导致工具把换行当成了字符。

3. 用中文/Unicode 字符做字符集但期望只出字母

错误
字符集: a-z(期望只出 a 到 z)
修复
字符集: abcdefghijklmnopqrstuvwxyz

工具不识别 'a-z' 这种范围语法,它把 'a'、'-'、'z' 当作三个独立字符。想用范围必须手动列出所有字符。

4. 批量生成时把结果当唯一 ID 用

错误
生成 1000 条 4 位字符,直接存入数据库当主键
修复
生成 1000 条 4 位字符后,去重检查或增加长度到 12 位以上

4 位字符(62 个字符集)只有 62^4 ≈ 1478 万组合,批量 1000 条碰撞概率约 3.4%。做唯一标识需足够长度或配合数据库唯一约束。

5. 把生成结果里的空格当成空字符串

错误
字符集: ' '(空格),生成结果:'   '(3 个空格)
修复
字符集: ''(空),或直接不填字符集

空格是可见字符,工具会正常输出。如果字符集里只有一个空格,生成结果就是若干个空格,肉眼看不见但长度正确。

6. 复制粘贴时混入不可见字符

错误
从 Word/PDF 复制字符集粘贴到输入框
修复
手动在输入框里键入字符集,或用纯文本编辑器(记事本)中转

富文本复制会携带零宽空格、软连字符等不可见 Unicode 字符,导致生成结果里出现意料之外的字符。

7. 期望每次刷新页面结果不变

错误
刷新页面后,相同参数得到不同结果,认为工具出 bug
修复
这是正常行为——随机字符每次生成都是独立随机抽取

工具没有种子(seed)机制,每次生成都是真随机或伪随机。如果需要可复现的结果,应自己保存生成时的参数和结果。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

N = C(L, k) = L^k

变量说明

  • N — 可能生成的字符组合总数
  • L — 自定义字符集的大小(字符个数)
  • k — 每个随机字符串的长度(字符数)

示例

使用数字和小写字母作为字符集:0-9(10个)+ a-z(26个),共 L=36 个字符。生成 4 位长度的随机字符串,则 k=4。组合总数 N = 36^4 = 1,679,616 种。若批量生成 100 个,每个字符串从 167 万种可能中独立随机选取,重复概率极低。

适用范围

适用于任意自定义字符集(大小写字母、数字、符号等)和任意长度 k(k≥1)。当 k 较大(如 >10)且 L 较小时,组合数仍足够大;当 k=0 或 L=0 时无意义,工具应限制输入。

原理图

用户输入字符集 / 长度 / 数量浏览器本地处理JS 随机生成 + 去重输出结果批量随机字符串流程说明用户自定义字符集(如 abc123)、字符串长度、生成数量所有计算在浏览器内完成,数据不上传服务器,隐私安全
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import random
import string

def random_string(length=8, chars=None):
    """生成指定长度的随机字符串"""
    if chars is None:
        chars = string.ascii_letters + string.digits  # 默认大小写字母+数字
    return ''.join(random.choices(chars, k=length))

# 批量生成 3 个,每个 12 位,仅小写字母和数字
charset = string.ascii_lowercase + string.digits
for _ in range(3):
    print(random_string(12, charset))
# 输出示例:
# a7k9x2m4p1q3
# b8r5t6y7u8i0
# c2v3b4n5m6l7
package main

import (
	"crypto/rand"
	"fmt"
	"math/big"
)

// 从给定字符集中随机选择 n 个字符
func randomString(n int, charset string) (string, error) {
	result := make([]byte, n)
	for i := range result {
		idx, err := rand.Int(rand.Reader, big.NewInt(int64(len(charset))))
		if err != nil {
			return "", err
		}
		result[i] = charset[idx.Int64()]
	}
	return string(result), nil
}

func main() {
	// 使用大小写字母+数字,生成 3 个 12 位随机字符串
	charset := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
	for i := 0; i < 3; i++ {
		s, err := randomString(12, charset)
		if err != nil {
			panic(err)
		}
		fmt.Println(s)
	}
	// 输出示例:
	// 7K9x2M4p1Q3a
	// B8r5T6y7U8i0
	// C2v3B4n5M6l7
}
// 生成随机字符串(浏览器或 Node.js 均可)
function randomString(length, chars) {
  if (!chars) {
    chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  }
  let result = '';
  const array = new Uint8Array(length);
  crypto.getRandomValues(array);  // 使用密码学安全随机数
  for (let i = 0; i < length; i++) {
    result += chars[array[i] % chars.length];
  }
  return result;
}

// 批量生成 3 个 12 位随机字符串(仅小写字母+数字)
const charset = 'abcdefghijklmnopqrstuvwxyz0123456789';
for (let i = 0; i < 3; i++) {
  console.log(randomString(12, charset));
}
// 输出示例:
// a7k9x2m4p1q3
// b8r5t6y7u8i0
// c2v3b4n5m6l7

常见问题

8 个高频疑问

生成的随机字符是真正的随机吗?还是伪随机?
本工具使用浏览器内置的 `crypto.getRandomValues()` 方法生成随机数,这是操作系统底层提供的加密安全伪随机数生成器(CSPRNG),种子来源于硬件噪声、系统时间等不可预测源,安全性远高于 `Math.random()`。对于密码生成、Token 创建等场景足够安全,但如果你需要物理真随机(如量子随机),本工具不适用。所有计算在浏览器本地完成,不依赖网络。
为什么我设置了只生成数字,结果里却出现了字母?
检查一下字符集设置。工具默认字符集是「大小写字母+数字」,如果你只想要数字,需要在「自定义字符集」输入框中手动删除字母,只保留 0123456789。另一种可能是:你设置了「排除易混淆字符」,该选项默认会排除 o、0、l、1 等,但不会把字母变成数字。如果确认字符集里只有数字,结果必定全是数字——每轮生成都严格从你指定的字符集中均匀采样。
最多能一次生成多少个字符?有长度限制吗?
单次生成的「每个字符串长度」上限是 1000 个字符,批量生成的「字符串数量」上限是 500 条。这两个限制是出于浏览器性能考虑——如果一次生成几万个字符,页面渲染会卡顿甚至崩溃。如果确实需要大量数据,建议分多次生成,或复制结果后自行拼接。所有限制在浏览器本地,不涉及服务器端配额。
生成的字符可以包含空格和特殊符号吗?
可以。在「自定义字符集」输入框中直接输入你想要包含的任何字符,包括空格、标点、Emoji 等。注意:空格在输入框中可能不易察觉,建议用英文双引号括起来确认。工具不会对字符集做任何过滤或转义,你输入什么就从中采样什么。如果字符集包含重复字符,重复项会被自动去重,不影响概率分布。
这个工具和 Excel 的 RANDBETWEEN 或者 Python 的 random 模块比,有什么优势?
主要优势有三点:一是无需安装任何软件,浏览器打开即用,适合临时或跨设备场景;二是使用加密安全随机源,而 Excel 和 Python 的 `random` 模块默认使用梅森旋转算法(Mersenne Twister),属于可预测的伪随机,不适合密码学用途;三是本工具支持批量生成和排除易混淆字符,比手写脚本更直观。缺点是无法在离线无浏览器环境下用(如服务器脚本中),且不提供种子设定,无法复现同一批结果。
生成的字符会不会有连续重复或规律模式?比如 'aaabbb' 这种情况?
理论上可能,因为每次采样都是独立事件,连续两次采样到同一字符的概率是 1/字符集大小。字符集越短(比如纯数字),重复概率越高。工具不强制「相邻不重复」,因为那会破坏随机性。如果你需要避免连续重复(如用于人类易读的验证码),可以在生成后手动检查或用工具的「排除易混淆字符」选项——该选项只排除视觉相似的字符对(如 0/O、1/l),不影响重复概率。
为什么我复制出来的字符粘贴到别处后多了一些空格或者换行?
本工具的结果区域默认使用等宽字体显示,每行显示一个字符串(批量模式),复制时每个字符串自带换行符。如果你只需要单个字符串,请使用「单次生成」模式,复制时不会带多余换行。另外,部分浏览器会在复制时自动添加不可见字符(如零宽空格),这是浏览器行为,与本工具无关。建议粘贴到纯文本编辑器(如记事本)中确认后再使用。
这个工具完全免费吗?有没有隐藏收费或使用次数限制?
完全免费,无任何隐藏收费。工具是纯前端实现,所有代码运行在你的浏览器中,不依赖任何第三方 API 或云服务,因此不存在按次计费或限量逻辑。没有注册、登录、积分等限制。如果你看到任何页面弹窗要求付费,那可能是浏览器插件或网络劫持,与本工具无关。
选择 打开 +新窗口 esc关闭