使用方法
- 先选「命名模式」,三套规则气质差别很大:真实系像天文目录里的编号名,科幻系像架空星球,神话系带神祇色彩。
- 填「随机种子」,范围 1 到 2147483646,示例 20261012。种子是这套算法的唯一输入变量,同一个种子永远生成同一批名字,换一个数字整批就变。
- 填「生成数量」,范围 1 到 60,示例 12。数量只决定抽多少条,不会改变前面几条的顺序。
- 点「生成名字」,上方列表与下方明细表同步刷新,明细表给出每条名字的结构分解与字符数。
- 需要把整批名字发给同伴时,用「复制结果」拿纯名单,用「复制对照表」拿带制表符的表格,用「导出 CSV」拿带 BOM 的表格文件。
- 生成超过 12 条时明细表会先折叠,点「加载更多」按批展开,避免首屏被长表占满。
这个星球名字生成器能解决什么问题
写世界观、跑团、做独立游戏或给儿童科普出题时,最费时间的往往不是设定本身,而是把一批天体起名起得既不重复、又不尴尬。随手打字容易撞出「X 星」「Y 星球」这种一个模子刻出来的名字,而真正像天文目录的写法有固定结构:一颗恒星周围多颗行星要靠字母区分,观测编号要能排得开。本页把三套构词规则写进同一个页面,一条名字由若干个词池片段拼接而成,配合固定种子可以复现、可以分享、可以存档。
它适用于科幻与奇幻小说的星系设定、桌面角色扮演的地图标注、游戏关卡或星球系统的命名、儿童天文科普的举例,以及在给同人作品起名时批量产出一批候选再手工挑选。名字只是候选池,最终采用哪一个仍然由你来定。
生成原理与变量说明
三种模式走的是三套完全不同的构词规则,同一串随机数落在不同规则上,得到的是三种气质完全不同的名字。
- 真实系:
恒星名 + 编号 + 行星字母。恒星名从 12 个天文观测里常见的命名族中取,编号是 1 到 999 的整数,行星字母沿用天文惯例用小写字母标注同一颗恒星周围的行星。合计 12 × 999 × 7 = 83916 个组合。 - 科幻系:
词首 + 词中 + 词尾三段拼接,词首 12 个、词中 12 个、词尾 11 个,其中词尾里含一个空串,所以会出现「泽拉」这种两段名。合计 12 × 12 × 11 = 1584 个组合。 - 神话系:
神祇名 + 天体后缀,12 个神祇名配 6 个天体后缀,后缀同样含一个空串,因此会得到「阿瑞斯」这种不带后缀的写法。合计 12 × 6 = 72 个组合。
三种模式加起来一共 83916 + 1584 + 72 = 85572 个互不相同的名字,规模小到一个浏览器标签页就能全部枚举,不需要联网词库,也不会把输入内容发到任何服务器。
随机数用的是 32 位线性同余发生器,常数取自经典的 1103515245 与 12345,乘法之后与 0x7fffffff 按位与,等价于对 2147483647 取模。这里有一个容易踩的坑:乘法的中间结果会远超过 JavaScript 的安全整数范围,必须用 Math.imul 做 32 位整数乘法;如果退化成普通的 s * 1103515245 + 12345,引擎会先把越界结果做一次 ToInt32 转换,得到的序列与页面示例完全对不上。本页正文里的 12 条示例就是这样「由页面算出来再抄进正文」的,你可以把种子填回 20261012、数量填 12,逐条核对。
取索引的公式是 Math.floor(状态值 ÷ 2147483647 × 池长),再用「不小于池长就取池长减一」兜底。这个兜底不是多余的:当状态值非常接近 2147483647 时,浮点乘法可能算出恰好等于池长的结果,少了兜底就会取到 undefined,名字中间会莫名多出一段 undefined。
还有一个只属于真实系的惯例:行星字母从 b 开始排,a 被留给恒星本身。同一颗恒星周围第一颗被确认的行星记作 b,第二颗记作 c,依此类推;所以本页真实系里不会出现以 a 结尾的名字,看到「开普勒-930d」就表示这是该恒星系里的第三颗行星。这条约定来自天文界的命名做法,也是真实系与另外两种模式读起来最不一样的地方。
完整示例(数值仅作演示)
示例条件:命名模式「真实系」,随机种子 20261012,生成数量 12。
- 第 1 条 罗斯-272g,第 2 条 特拉普派-343f,第 3 条 开普勒-930d。
- 第 4 条 TOI-883f,第 5 条 开普勒-55h,第 6 条 开普勒-881b。
- 第 7 条 巴纳德-107e,第 8 条 HD-240d,第 9 条 TOI-720h。
- 第 10 条 拉兰德-400g,第 11 条 格利泽-607h,第 12 条 罗斯-128g。
同一个种子换成科幻系,得到的是 阿纳瑞斯、乌西瑞斯、泽瑞诺瓦、卡德瑞斯、泽拉、泽德里斯、塞里姆恩、弥洛诺瓦、卡欧、德西罗尔、诺斯、阿里罗尔;换成神话系则是 雅典娜行星、克洛诺斯王座、雅典娜王座、阿瑞斯、波塞冬王座、乌拉诺斯世界、阿瑞斯星、倪克斯星、乌拉诺斯星、赫尔墨斯星、阿波罗、塞勒涅行星。三套结果互不干扰,因为每种模式都从同一个种子重新开始推进。
换种子就换结果:种子 1 的第一条是 拉兰德-176d,种子 42 是 拉兰德-520e,种子 2026 是 格利泽-365b;对应的科幻系第一条分别是 德瑞里斯、卡塔克斯、泰欧托斯,神话系第一条分别是 克洛诺斯行星、赫尔墨斯王座、赫利俄斯王座。
示例中的种子与数量均为演示数值,生成结果完全由种子决定,与任何真实天体目录无关。
命名空间与撞名概率对照表
下表把三种模式的组合规模与撞名概率放在一起,方便判断该挑哪一种。撞名概率指的是从该模式的全部名字里抽若干次,至少出现一次重复的概率,用生日问题的公式 1 减去逐个 (1 − k ÷ N) 的连乘得到。
- 真实系:12 × 999 × 7 = 83916 个组合。抽 5 次撞名 0.01%,抽 8 次 0.03%,抽 10 次 0.05%,抽 12 次 0.08%,抽 20 次 0.23%,抽 30 次 0.52%,抽 50 次 1.45%。
- 科幻系:12 × 12 × 11 = 1584 个组合。抽 5 次撞名 0.63%,抽 8 次 1.75%,抽 10 次 2.81%,抽 12 次 4.09%,抽 20 次 11.35%,抽 30 次 24.14%,抽 50 次 54.23%。
- 神话系:12 × 6 = 72 个组合。池子在三种模式里最小,抽到十几条就基本会出现重复,适合只要几条关键名字的场景。
- 三模式合计 83916 + 1584 + 72 = 85572 个互不相同的名字。
把真实系与科幻系并排看会更清楚:同样抽 12 次,科幻系的撞名概率是 4.09%,真实系只有 0.08%。原因不是随机数质量不同,而是可选数量差了五十多倍,池子越小重复来得越早。所以「列表里出现同名」极少是程序出错,多半是模式选错了。
结果边界、舍入与适用说明
- 随机种子取 1 到 2147483646 的整数。种子 0 会被规约成 1,负数与超过上限的值会先取模,所以超出范围不会报错,但序列会与预期不同;这正是本页把种子限制在该区间的原因。
- 生成数量取 1 到 60 的整数,默认 12。列表与明细表超过 12 条时会折叠,点「加载更多」按批展开。
- 取索引时用「不小于池长就取池长减一」兜底,避免极少数状态下取到越界下标。
- 真实系的编号范围是 1 到 999,最小 1、最大 999,不会出现 0 号或四位数编号。
- 三种模式各自从种子出发独立推进,切换模式不会让另一种模式的结果跟着变。
- 本页是确定性的:同一个种子加同一个模式加同一个数量,永远得到同一批名字,可以直接分享给别人复现,而不是像使用时间或随机源那样每次都不同。
- 生成的名字只是灵感起点。真实系里的恒星名取自公开的天文命名族,但编号与行星字母的组合未必对应真实天体,请勿当作天文数据引用;用于商业作品前也请自行检索是否与既有商标或作品冲突。
常见问题
同一个种子每次生成的名字都一样吗?
一样。本页用的是确定性随机数发生器,种子是唯一的状态初值,同一个种子加同一个模式加同一个数量必然得到同一批名字。想换一批就把种子改掉,想保留某次满意的名单就把种子记下来,下次填回去即可。
为什么真实系的行星字母从 b 开始,没有 a?
这是天文界沿用的命名做法:行星字母按发现顺序从 b 排起,a 留给恒星本身,所以第一颗行星是 b、第二颗是 c。因此本页真实系的名字后缀只会出现 b 到 h,看到「开普勒-930d」就知道它是该恒星系里的第三颗行星。
列表里出现重复名字是程序出错吗?
不是。这是生日问题:从有限个名字里重复抽样,样本越多越容易撞上。科幻系只有 1584 个组合,抽 12 次至少撞一次的概率约 4.09%;真实系有 83916 个组合,同样抽 12 次只有 0.08%。想要几乎不撞名就选真实系,或者把生成数量降到 10 条以内。
三种模式该怎么选?
要像天文观测记录、带编号与字母后缀,选真实系;要架空但不撞现有词汇的星球名,选科幻系;要神祇色彩、适合神话体系或宗教设定,选神话系。三者也可以混用,各自记下种子再取,就能拼出一个既有观测味又有传说味的星系名单。
种子可以填 0 或负数吗?
可以填但结果会和你预期的不一样:种子 0 会被规约成 1,负数和超过 2147483646 的值会先取模再使用,等于换了一个你没填过的种子。想让结果可复现、可分享,就保持在 1 到 2147483646 的整数范围内。
这些名字能直接用在小说或游戏里吗?
可以当作候选池使用,本页不主张任何权利。但真实系里的恒星名取自公开的天文命名族,若作品需要严谨,建议把编号部分再手工调整;用于商业项目前,也请自行确认名字没有与在先的商标或知名作品重名。
这个工具免费吗?
免费,无需注册即可使用。
输入的数据安全吗?
安全。计算在当前浏览器本地完成,不会上传输入内容。