希腊名字生成器

按固定种子从本名与族籍两组词池各取一次,拼出「本名 + 族籍绰号」结构的古希腊人名;同一种子永远得到同一批结果,方便复现与共享。

—

核心结论:同一种子、同一组参数的结果永远一致——把种子 20261013 与朋友交换,两边列表会逐条相同;换种子就换一整批。

使用方法

  1. 「随机种子」填 1 到 99,999,999 之间的整数,默认 20261013;种子相同、其它参数相同,得到的列表就完全相同。
  2. 「性别 / 类型」选男性、女性或神祇派生:前两者输出「本名 + 族籍绰号」,神祇派生输出「神名 + 后缀」。
  3. 「生成数量」填 1 到 60,默认 12;输入框里按 Enter 立即生成。
  4. 结果表格逐条给出本名下标与后缀下标,方便核对某一条是怎么来的;「本批名字」区给出纯文本清单,可直接粘贴使用。
  5. 列表默认显示 6 行,点「加载更多」每次再展开 6 行;「复制对照表」复制 TSV,「导出 CSV」输出带 UTF-8 BOM 的文件。
  6. 想换一批名字,改动种子即可:种子差 1 也会让第一条完全不同。

这个希腊名字生成器能解决什么问题

写小说、跑团或给游戏 NPC 起名时,真正麻烦的不是「起一个好听的名字」,而是一次性要十几个风格统一的角色名,并且明天还能找回同一批。本页用固定种子驱动,把随机生成变成可复现的生成:只要记住种子与数量,任何时候重新打开都能得到逐条相同的结果,团队协作时把种子贴给同伴即可对齐。本页在站内的旧称呼是 Greek名字生成器,页面统一改用希腊名字生成器这一术语。它还顺带解决了「重名」的可预期性问题——命名空间只有几百个组合,批量要有多少重复是可以算出来的,页面把这张概率表直接列在下方,生成多少条、预期出现几次重复,先看数字再决定要不要换词池。

计算原理与变量说明

核心是一个 32 位线性同余发生器(LCG),每次取词前把内部状态推进一格:

(无名)空串后缀是怎么来的:族籍词池的第 7 项是一个空字符串,取到它时页面补写一个中文标记,于是出现「菲利普斯(无名)」这类退化结果——它依然占一个组合,直觉上的男性 12 × 12 = 144 个命名空间因此成立,但其中有 12 个会长成「本名 + (无名)」的样子。

重复概率远高于直觉:从 144 个等概率名字里抽 12 次,至少出现一次重复的概率是 37.57%,抽到 20 次就升到 74.93%,30 次达到 96.13%。这是典型的生日问题——概率随组合数快速增长,而不是线性增长。因此一次生成 12 条时看到重名是正常现象,把数量调到 60 时几乎必然出现重复,需要唯一名单时应人工筛一遍。

为什么是「本名 + 族籍」:古希腊人的正式称呼常是本人名加上父名或所属城邦、地区的限定成分,例如「某某的雅典人」这种结构,用来在同名者之间做区分。页面没有模拟完整的父名变格,而是用一组固定的族籍绰号近似这种结构,所以产出的名字读起来符合语感,但不指向任何真实历史人物。

完整示例(数值仅作演示)

默认参数(种子 20261013、数量 12)下,三种模式的结果如下,均由页面自身的算法算出:

命名空间与重复概率对照表

下表是三种模式各自的组合空间大小。

模式本名词池后缀词池命名空间结构
男性12 个男性本名12144本名 + 族籍绰号
女性12 个女性本名12144本名 + 族籍绰号
神祇派生12 位神名672神名 + 神职后缀
合计跨模式独立—360三种互不相通

下表是在 144 个等概率名字里抽 n 次,至少出现一次重复的概率。

抽取次数 n至少一次重复生成建议
56.78%基本不会出现重名
817.96%偶尔出现一次
1027.36%约有四分之一概率撞名
1237.57%默认值,撞名属常态
2074.93%多数批次都会重复
3096.13%几乎必然重复
5099.99%必须人工去重

结果边界、舍入与适用说明

常见问题

为什么同一个种子每次结果都一样?

这是刻意的。内部状态由种子唯一决定,st = seed % 2147483647 之后每步都用固定的乘数与增量推进,所以种子不变、序列就不变。好处是可以复现和共享:把种子与数量贴给别人,对方得到的列表逐条一致。

为什么条数一多就会撞名?

因为命名空间只有 144 个。抽 12 次时至少一次重复的概率已经是 37.57%,抽 30 次升到 96.13%。想要名单不重名字,要么减少数量,要么换种子多生成几批再手工挑。

「菲利普斯(无名)」这种结果是不是出错了?

不是。族籍词池里有一项是空字符串,用来模拟「不带族籍限定」的称呼方式;页面把这种情况显示成中文标记而不是留空,以免看起来像漏字符。它在 144 个组合里同样占位置。

男性和女性的结果好像「同步」出现一样的重复位置,正常吗?

正常。两种模式从同一个种子起步、用同一条推进序列,差别只在词池内容,所以第 3、4、7 条在两个列表里都会取到各自词池的同一项,看起来像同步。

能把这套序列换成 Math.random 吗?

不建议。这样会丢掉可复现性:同一颗种子在不同浏览器、不同时刻结果不同,也就无法把名单分享出去。若确实要随机,可以随手改种子,效果等价而代价更小。

可以把 Math.imul 写成普通乘法吗?

不能。st * 1103515245 的中间结果超过 2 的 53 次方,会被先转成 32 位整型再参与运算,得到的那条序列与本页完全不同,种子对不上就没有共享的价值了。

这个工具免费吗?

免费,无需注册即可使用。

输入的数据安全吗?

安全。生成在当前浏览器本地完成,不会上传输入内容。

相关工具