使用方法
- 「随机种子」填 1 到 99,999,999 之间的整数,默认 20261013;种子相同、其它参数相同,得到的列表就完全相同。
- 「性别 / 类型」选男性、女性或神祇派生:前两者输出「本名 + 族籍绰号」,神祇派生输出「神名 + 后缀」。
- 「生成数量」填 1 到 60,默认 12;输入框里按 Enter 立即生成。
- 结果表格逐条给出本名下标与后缀下标,方便核对某一条是怎么来的;「本批名字」区给出纯文本清单,可直接粘贴使用。
- 列表默认显示 6 行,点「加载更多」每次再展开 6 行;「复制对照表」复制 TSV,「导出 CSV」输出带 UTF-8 BOM 的文件。
- 想换一批名字,改动种子即可:种子差 1 也会让第一条完全不同。
这个希腊名字生成器能解决什么问题
写小说、跑团或给游戏 NPC 起名时,真正麻烦的不是「起一个好听的名字」,而是一次性要十几个风格统一的角色名,并且明天还能找回同一批。本页用固定种子驱动,把随机生成变成可复现的生成:只要记住种子与数量,任何时候重新打开都能得到逐条相同的结果,团队协作时把种子贴给同伴即可对齐。本页在站内的旧称呼是 Greek名字生成器,页面统一改用希腊名字生成器这一术语。它还顺带解决了「重名」的可预期性问题——命名空间只有几百个组合,批量要有多少重复是可以算出来的,页面把这张概率表直接列在下方,生成多少条、预期出现几次重复,先看数字再决定要不要换词池。
计算原理与变量说明
核心是一个 32 位线性同余发生器(LCG),每次取词前把内部状态推进一格:
- 状态初值:
st = seed % 2147483647,若结果为 0 则改成 1。 - 推进:
st = (Math.imul(st, 1103515245) + 12345) & 0x7fffffff。这里必须用Math.imul——直接写st * 1103515245的中间值超过 253,会被先转成 32 位整型再参与后续运算,得到的序列与本页完全不同。 - 取下标:
idx = Math.floor(st / 2147483647 * len),并对idx >= len的情况回退到len - 1。 - 一条名字取两次:先推进一步取本名,再推进一步取后缀,两次互不复用同一个状态值;下一条接着从上次的状态继续。
- 三种模式各自回到同一个初值:男性、女性、神祇派生都从同一个种子初值重新起步,所以同一个种子下三张表的下标序列是同一条,差异只来自各自词池。
(无名)空串后缀是怎么来的:族籍词池的第 7 项是一个空字符串,取到它时页面补写一个中文标记,于是出现「菲利普斯(无名)」这类退化结果——它依然占一个组合,直觉上的男性 12 × 12 = 144 个命名空间因此成立,但其中有 12 个会长成「本名 + (无名)」的样子。
重复概率远高于直觉:从 144 个等概率名字里抽 12 次,至少出现一次重复的概率是 37.57%,抽到 20 次就升到 74.93%,30 次达到 96.13%。这是典型的生日问题——概率随组合数快速增长,而不是线性增长。因此一次生成 12 条时看到重名是正常现象,把数量调到 60 时几乎必然出现重复,需要唯一名单时应人工筛一遍。
为什么是「本名 + 族籍」:古希腊人的正式称呼常是本人名加上父名或所属城邦、地区的限定成分,例如「某某的雅典人」这种结构,用来在同名者之间做区分。页面没有模拟完整的父名变格,而是用一组固定的族籍绰号近似这种结构,所以产出的名字读起来符合语感,但不指向任何真实历史人物。
完整示例(数值仅作演示)
默认参数(种子 20261013、数量 12)下,三种模式的结果如下,均由页面自身的算法算出:
- 男性 12 条:列奥尼达的罗得岛人、菲利普斯(无名)、忒修斯的米利都人、忒修斯(无名)、阿喀琉斯的叙拉古人、忒勒玛科斯的斯巴达人、忒修斯的雅典人、珀尔修斯的罗得岛人、忒勒玛科斯的奥林匹亚人、德摩斯提尼的米利都人、菲利普斯的德尔斐人、狄奥尼索斯的德尔斐人。
- 女性 12 条:厄勒克特拉的罗得岛人、忒亚诺(无名)、卡珊德拉的米利都人、卡珊德拉(无名)、阿尔忒弥西亚的叙拉古人、阿斯帕西娅的斯巴达人、卡珊德拉的雅典人、安德洛玛刻的罗得岛人、阿斯帕西娅的奥林匹亚人、得墨忒拉的米利都人、忒亚诺的德尔斐人、海伦娜的德尔斐人。
- 神祇派生 12 条:赫尔墨斯的代言人、阿佛洛狄忒之矛、波塞冬之盾、波塞冬之矛、阿波罗的代言人、阿瑞斯的信徒、波塞冬的祭司、得墨忒耳的代言人、阿瑞斯(无名)、赫菲斯托斯之盾、阿佛洛狄忒(无名)、赫拉(无名)。
- 三组的本名下标序列相同,第 1 条都落在各自本名词池的第 11 项(下标 10);男女两组的后缀下标同为 9,神祇组因后缀词池只有 6 项,同一位置取到下标 4,也就是「的代言人」。
- 男性第 3、4、7 条都是「忒修斯」开头,因为这三处的本名下标都落在词池同一项上;这就是批量结果的重复来源。
命名空间与重复概率对照表
下表是三种模式各自的组合空间大小。
| 模式 | 本名词池 | 后缀词池 | 命名空间 | 结构 |
|---|---|---|---|---|
| 男性 | 12 个男性本名 | 12 | 144 | 本名 + 族籍绰号 |
| 女性 | 12 个女性本名 | 12 | 144 | 本名 + 族籍绰号 |
| 神祇派生 | 12 位神名 | 6 | 72 | 神名 + 神职后缀 |
| 合计 | 跨模式独立 | — | 360 | 三种互不相通 |
下表是在 144 个等概率名字里抽 n 次,至少出现一次重复的概率。
| 抽取次数 n | 至少一次重复 | 生成建议 |
|---|---|---|
| 5 | 6.78% | 基本不会出现重名 |
| 8 | 17.96% | 偶尔出现一次 |
| 10 | 27.36% | 约有四分之一概率撞名 |
| 12 | 37.57% | 默认值,撞名属常态 |
| 20 | 74.93% | 多数批次都会重复 |
| 30 | 96.13% | 几乎必然重复 |
| 50 | 99.99% | 必须人工去重 |
结果边界、舍入与适用说明
- 种子取 1 ~ 99,999,999,数量取 1 ~ 60;种子 0 或负数会被页面拦下并提示。
- 种子先对 2147483647 取模,再按取模结果起步;三个模式使用同一套推进规则,因此同一批下标在不同模式间可直接对照。
- 结果是伪随机而非真随机:连续或相近的种子会产生完全不同的第一条,但整条序列在数学上是可预测的,不适合当作密码学随机源。
- 神祇派生模式只有 72 个组合,重复来得比男女模式更快。
- 取到空字符串后缀时补中文标记,该结果依然计入去重统计。
- 页面统计的去重条数只针对当前这一批,不做跨批次累积。
- 词池中的名字取自常见古希腊人名的中文译写,不同译本用字会有差异。
- 产出的名字不指向真实历史人物,用作真实姓名前请先查证;生成过程在本地浏览器完成。
常见问题
为什么同一个种子每次结果都一样?
这是刻意的。内部状态由种子唯一决定,st = seed % 2147483647 之后每步都用固定的乘数与增量推进,所以种子不变、序列就不变。好处是可以复现和共享:把种子与数量贴给别人,对方得到的列表逐条一致。
为什么条数一多就会撞名?
因为命名空间只有 144 个。抽 12 次时至少一次重复的概率已经是 37.57%,抽 30 次升到 96.13%。想要名单不重名字,要么减少数量,要么换种子多生成几批再手工挑。
「菲利普斯(无名)」这种结果是不是出错了?
不是。族籍词池里有一项是空字符串,用来模拟「不带族籍限定」的称呼方式;页面把这种情况显示成中文标记而不是留空,以免看起来像漏字符。它在 144 个组合里同样占位置。
男性和女性的结果好像「同步」出现一样的重复位置,正常吗?
正常。两种模式从同一个种子起步、用同一条推进序列,差别只在词池内容,所以第 3、4、7 条在两个列表里都会取到各自词池的同一项,看起来像同步。
能把这套序列换成 Math.random 吗?
不建议。这样会丢掉可复现性:同一颗种子在不同浏览器、不同时刻结果不同,也就无法把名单分享出去。若确实要随机,可以随手改种子,效果等价而代价更小。
可以把 Math.imul 写成普通乘法吗?
不能。st * 1103515245 的中间结果超过 2 的 53 次方,会被先转成 32 位整型再参与运算,得到的那条序列与本页完全不同,种子对不上就没有共享的价值了。
这个工具免费吗?
免费,无需注册即可使用。
输入的数据安全吗?
安全。生成在当前浏览器本地完成,不会上传输入内容。