使用方法
- 「恒星质量」默认 1,单位是 M☉(太阳质量倍数),允许 0.1 到 10、步长 0.1;改完或按回车立即重算。
- 「统一半长轴」默认留空,此时每颗星球的轨道半长轴按种子在 0.2 到 5 AU 内抽取;填入具体数值(0.05 到 30)则整批共用该距离,适合固定轨道、只比质量与半径的场景。
- 「生成数量」默认 12,允许 1 到 60 的整数。
- 「随机种子」默认 20261012,可写任意文字;种子按字符码累加折叠成 31 位整数,同一种子必然复现同一批。
- 结果区首行是概要(种子折叠值、恒星质量、半长轴模式、数量),随后按列给出质量、半径、半长轴、公转周期、表面重力、逃逸速度、平均密度与相对通量,末行给出周期与通量的范围和本批最重。
- 明细表默认显示 12 行,点「加载更多」展开全部;「导出 CSV」存成带字节序标记的文件,Excel 打开不乱码。
- 「复制结果」复制整段文本;「复制明细表」把当前表格按 TSV 复制,粘进表格软件列位不乱。
- 恒星质量写成 0 或 20、统一半长轴写成 0.01、数量写成 7.5、种子留空,都会给出针对该项的具体提示,不会拿上一批冒充本次输出。
这个随机星球生成器能解决什么问题
第一类是给设定补数字。写科幻、跑桌游、做游戏星球清单时,最缺的不是名字而是「这颗球有多重、重力几倍、能不能留住大气」。本页一批给出质量、半径与全部派生量:默认第 5 颗 15.34 M⊕、1.34 R⊕,表面重力 83.90 m/s²,是地球的 8.5 倍,密度 35.150 g/cm³——这类数字立刻能反推出设定的靠谱程度。
第二类是课堂上演示开普勒第三定律。把「统一半长轴」填成 2 AU,整批周期全部等于 2.8284 年、通量全部等于 0.2500,质量再杂也不影响周期;再把恒星质量从 1 调到 2,同一批的半长轴下周期统统变成原来的 1/√2。两个动作各自验证公式里哪个变量在起作用。
第三类是暴露不自洽的设定。「超级地球却有月球重力」在密度一列会直接露馅:质量大而半径更大时,密度被拉到 0.1 g/cm³ 量级,那不是岩石行星该有的数。本页不判断合理性,只把四个标量摆到一起,让矛盾自己显形。
第四类是统一物理口径。地球表面重力到底写 9.80665 还是 9.8203,两种教科书都能见到;本页采用平均半径 6371 km 的口径,并在正文写明另一个值的来历,抄进设定集时不会再出现两种写法互相打架。
这个工具在本站也叫「随机星球生成器」,四列派生量全部由质量、半径、半长轴与恒星质量算出,不含任何随机修饰项,下面把公式与常数一次讲清。
计算原理与变量说明
四个常数。万有引力常数 G = 6.6743×10⁻¹¹ m³/(kg·s²),太阳质量 M☉ = 1.98892×10³⁰ kg,太阳半径 R☉ = 6.957×10⁸ m,天文单位 1 AU = 149597870700 m。页面里的一切速度、重力、密度都由这四个常数与地球参照值推出。
公转周期用开普勒第三定律。一般形式是 T = 2π√(a³/GM),其中 a 是轨道半长轴、M 是恒星质量。把 a 换成 AU、M 换成 M☉、T 换成年后,G·M☉·(1 年)² 与 (1 AU)³ 的比值恰好等于 4π²,公式化简为 T(年) = √(a³/M)。自检:a = 1.523679 AU、M = 1 时 T = 1.880790 年;a = 5.2044 AU 时 T = 11.872878 年。再验算 T² = a³/M:1.880790² = 3.537370,与 1.523679³ = 3.537370 一致。
两种口径的差一点头:把取整后的常数代回米/千克/秒形式,火星周期是 1.880584 年,与简化式 1.880790 相差约 0.0002 年,差异全部来自常数的六位取整。本页采用简化式计算,因为它不含额外近似,且让「恒星质量翻倍、周期除以 √2」这类关系在页面上精确成立。
表面重力、逃逸速度、平均密度。三个公式分别是 g = GM/R²、v = √(2GM/R)、ρ = 3M/(4πR³)。以地球为基准缩放(M、R 用地球倍数表示)得到 g = 9.8203·M/R²、v = 11.1862·√(M/R)、ρ = 5.5134·M/R³,单位分别是 m/s²、km/s、g/cm³。地球(M = 5.9722×10²⁴ kg、R = 6.371×10⁶ m)代进去得 9.8203 m/s²、11.1862 km/s、5.5134 g/cm³;木星(M = 1.8982×10²⁷ kg、R = 6.9911×10⁷ m)得 25.9213 m/s²、60.2027 km/s、1.3262 g/cm³;太阳(R = 6.957×10⁸ m)表面重力 274.27 m/s²、逃逸速度 617.754 km/s。
为什么地球重力有两个数。教科书的 9.80665 m/s² 是约定标准重力,配的是标准半径与纬度修正;用平均半径 6371 km 直接算 G·M/R² 得到 9.8203 m/s²。两者都对,只是口径不同——本页所有派生量都以 9.8203 为基准缩放,所以页面里的地球永远是 9.8203。
相对通量只反映距离。地球接收 1 S⊙,恒星辐照度随距离平方反比衰减,所以相对通量就是 1/a²:a = 2 AU 处只有 0.25。这一列不随恒星质量变化,也不含大气温室效应,是 sanity check 而不是气候模型;拿它判断「这批里哪几颗轨道离地球尺度最近」够用,判断宜居请另找模型。
随机源与站点口径一致。种子先按 s=(s+str.charCodeAt(i))&0x7fffffff 折叠成 31 位整数,默认种子 20261012 折叠为 398。每颗星球依次抽质量、半径、半长轴三个数,推进规则是 s=(Math.imul(s,1103515245)+12345)&0x7fffffff,连续量用 min + s/2147483647×(max−min) 线性映射。乘法必须用 Math.imul:中间结果接近 2⁶¹,超过双精度精确表示的 2⁵³,普通乘法会丢低位;本页不用取余取索引,因为三个量都是连续映射。
完整示例(数值仅作演示)
默认示例:恒星 1 M☉、数量 12 颗、半长轴随机、种子 20261012。前 3 行逐字如下——第 1 颗质量 10.41 M⊕、半径 3.46 R⊕、半长轴 4.194 AU、周期 8.5890 年、g 8.54 m/s²、v_esc 19.403 km/s、密度 1.386 g/cm³、通量 0.0569;第 2 颗 15.72 / 3.17 / 1.501、周期 1.8390 年、g 15.36、v_esc 24.910、密度 2.721、通量 0.4439;第 3 颗 1.90 / 3.78 / 0.429、周期 0.2810 年、g 1.31、v_esc 7.931、密度 0.194、通量 5.4336。只抽 3 颗时得到的正是这 3 行——每颗固定消耗三个随机数,第 4 颗不会影响前 3 颗。
用手算复核第 1 颗:T = √(4.194³/1) = 8.5890 年;g = 9.8203×10.41/3.46² = 8.54 m/s²;v_esc = 11.1862×√(10.41/3.46) = 19.403 km/s;ρ = 5.5134×10.41/3.46³ = 1.386 g/cm³;通量 = 1/4.194² = 0.0569。五个数与页面显示逐位一致,因为它们就是按显示值算的。
换参数看规律。恒星质量改成 2 M☉,前 3 颗周期变成 6.0733、1.3003、0.1987 年,正好是 1 M☉ 时 8.5890、1.8390、0.2810 各除以 √2;质量、半径、通量三列一动不动。再把「统一半长轴」填成 2,整批 12 颗的周期全是 2.8284 年、通量全是 0.2500,只剩 g、v_esc、密度在变。
参照天体与距离换算对照表
下表三个参照天体的质量、半径与派生量全部来自本页常数,可用页面公式复算。太阳一行的周期栏为空:它是恒星,不绕自己转。
| 天体 | 质量 | 半径 | 半长轴 | 公转周期 | g(m/s²) | v_esc(km/s) | 密度(g/cm³) |
|---|---|---|---|---|---|---|---|
| 太阳 | 1.98892e30 kg | 6.957e8 m | — | — | 274.27 | 617.754 | — |
| 地球 | 5.9722e24 kg | 6.371e6 m | 1 AU | 1.0000 年 | 9.8203 | 11.1862 | 5.5134 |
| 木星 | 1.8982e27 kg | 6.9911e7 m | 5.2044 AU | 11.872878 年 | 25.9213 | 60.2027 | 1.3262 |
下表是 1 M☉ 恒星下距离、通量与周期的对应,公式就是 1/a² 与 √(a³/M)。a = 2 AU 一行通量 0.2500、周期 2.8284 年,是页面 sanity check 的锚点;火星的 1.523679 AU 不在表内,用同一公式得周期 1.880790 年。
| 半长轴(AU) | 相对通量(1/a²) | 周期(年) |
|---|---|---|
| 0.4 | 6.2500 | 0.2530 |
| 0.7 | 2.0408 | 0.5857 |
| 1.0 | 1.0000 | 1.0000 |
| 1.5 | 0.4444 | 1.8371 |
| 2.0 | 0.2500 | 2.8284 |
| 3.0 | 0.1111 | 5.1962 |
| 5.0 | 0.0400 | 11.1803 |
结果边界与舍入说明
- 恒星质量留空、写成文字、小于 0.1 或大于 10 时,分别提示「恒星质量不能为空,请填 0.1 到 10 之间的 M☉ 倍数」「不是数字」「超出范围」,三条都点名是「恒星质量」这一项。
- 统一半长轴填了但小于 0.05 或大于 30 时提示超出范围;留空则整批按种子在 0.2 到 5 AU 内抽取,这是两种明确模式,不猜中间态。
- 数量必须是 1 到 60 的整数;种子不能为空,长度不限,折叠后恒在 0 到 2147483647 之间。
- 舍入位数固定:质量与半径 2 位、半长轴 3 位、周期 4 位、表面重力 2 位、逃逸速度与密度 3 位、通量 4 位。派生量按显示值计算,所以正文示例可以用页面上看到的数字原样复算,不会出现「显示 8.5890、手算 8.5889」的错位。
- 所有数位的有效数字都远小于双精度的 16 位上限,不会出现 2589988.1103360001 这类残留。
- 质量、半径、半长轴各自独立抽取、不查重;12 颗里出现同质量是正常的,末尾「最重」一栏取第一个最大值。
- LCG 是确定性伪随机数,适合生成设定与教学演示;涉及密钥的场景应换用 crypto.getRandomValues,本页不涉密。
- 页面不联网、不写 localStorage,恒星质量与种子只参与本次计算。
常见问题
同一个种子为什么每次生成的结果都一样?换一批要怎么换?
因为随机流是确定性的:种子按字符码折叠成 31 位整数作起点,之后按(s × 1103515245 + 12345)对 231 取模推进,同一种子必然走出同一条序列。想换一批就改种子,或改恒星质量、半长轴模式——注意改恒星质量不会改半长轴抽样,只会改周期列。
恒星质量翻倍,周期会发生什么变化?
周期变成原来的 1/√2,约 0.7071 倍。因为 T = √(a³/M),M 翻倍则 T 除以 √2:默认第 1 颗 8.5890 年,恒星 2 M☉ 时是 6.0733 年。质量、半径、通量三列不受影响,它们与恒星质量无关。
地球表面重力到底该写 9.80665 还是 9.8203?
两个数都对,口径不同。9.80665 m/s² 是约定标准重力,配标准半径与纬度修正;用平均半径 6371 km 直接代入 G·M/R² 得 9.8203 m/s²。本页以 9.8203 为缩放基准(g = 9.8203·M/R²),所以页面里地球恒显示 9.8203。
T = √(a³/M) 是怎么从 T = 2π√(a³/GM) 变过来的?
把单位换成 AU、M☉、年。G·M☉·(1 年)² 除以 (1 AU)³ 恰好等于 4π²,根号内外的 4π² 约掉,只剩 √(a³/M)。自检:a = 1.523679、M = 1 得 1.880790 年,T² = 3.537370 与 a³ = 3.537370 一致。若把取整常数代回 SI 单位会得到 1.880584 年,两者差约 0.0002 年,来自常数取整。
相对通量一列为什么不随恒星质量变化?
因为它只编码距离:通量按 1/a² 衰减,a = 2 AU 处恒为 0.25,与恒星无关。真实恒星光度随质量增大而上升,页面没有建模,所以这一列只能回答「离地球尺度多远」,不能回答「接收多少能量」。要做宜居判断请配合专门的大气与光度模型。
生成的星球会重复吗?同一批里能出现两颗一样的吗?
会。质量、半径、半长轴各自独立抽取、不查重,12 颗里出现两个相同组合完全可能,只是概率不高。末尾的「最重」取第一个达到最大值的行,不枚举并列。
抽出来的密度有 35 g/cm³,这合理吗?
页面只保证算术正确,不保证天文合理。35.150 g/cm³ 来自 15.34 M⊕ 配 1.34 R⊕ 的纯铁球级压缩,远超已知行星(地球 5.5134、木星 1.3262)。把半径下限调到 0.4 R⊕ 正是为了让这类极端值有机会出现,用它演示「质量半径必须匹配」比只给温和值更直观。
输入的数据会上传吗?工具免费吗?
免费,无需注册。所有计算都在当前浏览器本地完成,页面不联网、不写 localStorage,恒星质量、半长轴与种子只用于本次生成。