随机化学元素生成器

从 118 种元素的完整数据表里按种子抽取,每条给出原子序数、符号、中文名、相对原子质量、类别与周期;十类可筛选,同一种子逐字复现,附类别分布对照表与带 BOM 的 CSV 导出。

词库 118 种元素,本次从 118 种里独立抽取 12 条,不查重;种子不变则整批逐字复现。
种子 20261012(字符码折叠为 398) | 数量 12 | 类别 全部(118 种)
-- 12 条生成结果 --
   1   62  Sm  钐      150.36  镧系      第 6 周期
   2  101  Md  钔         258  锕系      第 7 周期
   3   99  Es  锿         252  锕系      第 7 周期
   4   93  Np  镎         237  锕系      第 7 周期
   5   91  Pa  镤      231.04  锕系      第 7 周期
   6   32  Ge  锗      72.630  类金属     第 4 周期
   7   11  Na  钠      22.990  碱金属     第 3 周期
   8  111  Rg  钅仑        272  过渡金属    第 7 周期
   9    6  C   碳      12.011  非金属     第 2 周期
  10   88  Ra  镭         226  碱土金属    第 7 周期
  11  100  Fm  镄         257  锕系      第 7 周期
  12   39  Y   钇      88.906  过渡金属    第 5 周期
本批最重 Rg 钅仑 272;最轻 C 碳 12.011;互异元素 12 种
生成条数12 条
种子折叠值398
本批最重Rg 钅仑 272
互异元素12 / 12 种
#Z符号中文名相对原子质量类别周期
162Sm钐150.36镧系第 6 周期
2101Md钔258锕系第 7 周期
399Es锿252锕系第 7 周期
493Np镎237锕系第 7 周期
591Pa镤231.04锕系第 7 周期
632Ge锗72.630类金属第 4 周期
711Na钠22.990碱金属第 3 周期
8111Rg钅仑272过渡金属第 7 周期
96C碳12.011非金属第 2 周期
1088Ra镭226碱土金属第 7 周期
11100Fm镄257锕系第 7 周期
1239Y钇88.906过渡金属第 5 周期

默认示例:种子 20261012、数量 12、全部 118 种。数量、种子、类别任意一项改动即重新生成,光标停在数量或种子框里按回车同样触发一次;明细表默认显示 12 行,点「加载更多」展开全部。

使用方法

  1. 「生成数量」默认 12,允许 1 到 60 的整数;改完数字,或把光标停在框里按回车,立刻重算一批。
  2. 「随机种子」默认 20261012,可以写任意文字,数字、字母、汉字都合法。种子先按字符码累加折叠成 31 位整数,同一种子必然复现同一批。
  3. 「类别筛选」默认全部 118 种;锁定某一类后只在该类里抽取,比如卤素只有 6 种、稀有气体只有 7 种,可选池一下子变小。
  4. 结果区第一行是概要(种子折叠值、数量、类别与池长),随后逐条给出原子序数 Z、符号、中文名、相对原子质量、类别和周期,末行给出本批最重、最轻与互异元素数。
  5. 明细表默认显示 12 行,点「加载更多」展开全部;「导出 CSV」存成带字节序标记的文件,Excel 直接打开不乱码。
  6. 「复制结果」复制整段文本;「复制明细表」把当前表格按 TSV 复制,粘进表格软件列位不乱。
  7. 想复现某一批,只需记下种子、数量、类别三项:同样的三项输入,任何时候打开都得到逐字相同的一批。
  8. 数量写成小数或超出 1 到 60、种子留空,都会给出针对该项的具体提示,不会拿上一批的结果冒充本次输出。

这个随机化学元素生成器能解决什么问题

第一类是课堂上「不知道抽谁」。化学绪论课让学生轮流说一种元素的性质,口头点人容易集中在前排;用本页按种子抽一批,Z=62 的钐、Z=101 的钔、Z=99 的锿依次出现,每人一个,覆盖面比顺序点名均匀。

第二类是出题与复盘对不上。试卷里写「随机抽三种元素写出电子排布」,学生问是哪三种时,如果工具每次刷新都变,这句话就是空头支票。本页把种子与折叠值写进结果第一行,凭 20261012 这个种子随时重放同一批。

第三类是只想练某一族。讲碱金属时不必从 118 种里捞,把类别锁到「碱金属」,池子只剩 6 种,抽 12 条必然大量重复——这正好拿来演示「独立抽取超过容量会怎样」。

第四类是数据口径不统一。市面上的元素表有的给四位小数、有的给整数、有的把不确定值写进方括号,互相之间对不上。本页 118 条采用同一份常规原子量口径,锝、钋这类没有稳定同位素的元素直接给质量数整数,页面上写明了这一点,复制进课件不会再出现两种写法。

这个工具在本站也叫「随机化学元素生成器」,内置表按 Z 从 1 排到 118,类别字段既是筛选依据也是明细表的一列,下面把折叠、推进、取整三步讲清楚。

计算原理与变量说明

数据表按 Z 连续编号。已确认元素共 118 种,从 Z=1 的氢(H)到 Z=118 的鿫(Og)连续排列,每行五列:Z、符号、中文名、相对原子质量、类别。类别共十类,元素数分别是非金属 7、稀有气体 7、碱金属 6、碱土金属 6、类金属 6、卤素 6、后过渡金属 12、过渡金属 38、镧系 15、锕系 15,合计 118。镧系是 Z=57 到 71 的 15 个元素(镧 La 到镥 Lu),锕系是 Z=89 到 103 的 15 个元素(锕 Ac 到铹 Lr)。118 种元素填满 7 个周期,每周期元素数为 2、8、8、18、18、32、32。

种子先折叠成 31 位整数。累加规则是 s=(s+str.charCodeAt(i))&0x7fffffff,逐字取字符码相加再截到 31 位。默认种子 20261012 八个字符的码值是 50、48、50、54、49、48、49、50,累加得 398,这就是随机流的起点。

每一步推进用线性同余发生器。公式是 s=(Math.imul(s,1103515245)+12345)&0x7fffffff,从 398 推进一次得 1112415663。乘法必须用 Math.imul 而不是普通乘号:398 乘 1103515245 约 4.4×1011,远超双精度浮点能精确表示的 253,普通乘法会丢掉低位,换台浏览器序列就对不上;Math.imul 按 32 位整数乘计算,结果与 C 语言实现一致。

取索引用 floor 映射,不用取余。公式是 Math.floor(s/2147483647*len)%len。分母取 2147483647(即 231−1)而不是 231,保证随机数取到上界时下标也不越界。为什么不能写 s%len:LCG 的低位比特随机性差、周期短,118 是偶数,取余会持续吃到受污染的低位,让相邻元素成对出现;先除以 231−1 再乘池长,用到的是高位比特。

类别筛选只改池长,不改公式。全部 118 种时池长 118;锁到卤素只剩 6 种,同一个 s 映射出的下标完全不同,因为乘的那个 len 变了。所以同一颗种子在「全部」与「卤素」下给出的不是同一批的子集,而是两批独立的结果,结果概要里用「类别(N 种)」把池长标了出来。

几个可以拿来查错的数。单字母符号只有 14 个:B、C、F、H、I、K、N、O、P、S、U、V、W、Y,其余 104 种都是两字母。常温常压(25 °C、1 atm)下呈液态的元素只有 2 个——汞(Hg)与溴(Br);呈气态的有 11 个——氢、氦、氮、氧、氟、氖、氯、氩、氪、氙、氡。地壳质量丰度前两位是氧 46.6%、硅 27.7%;人体质量前四位是氧 65%、碳 18%、氢 10%、氮 3%。

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

默认示例:种子 20261012、数量 12、类别全部。折叠值 398,推进 12 步后逐字如下——第 1 条钐(Sm,Z=62,150.36,镧系)、第 2 条钔(Md,Z=101,258,锕系)、第 3 条锿(Es,Z=99,252,锕系)、第 4 条镎(Np,Z=93,237,锕系)、第 5 条镤(Pa,Z=91,231.04,锕系)、第 6 条锗(Ge,Z=32,72.630,类金属)、第 7 条钠(Na,Z=11,22.990,碱金属)、第 8 条钅仑(Rg,Z=111,272,过渡金属)、第 9 条碳(C,Z=6,12.011,非金属)、第 10 条镭(Ra,Z=88,226,碱土金属)、第 11 条镄(Fm,Z=100,257,锕系)、第 12 条钇(Y,Z=39,88.906,过渡金属)。本批最重是钅仑 272,最轻是碳 12.011,12 条互异。

如果只抽 5 个,得到的是这 12 条的前 5 条:钐、钔、锿、镎、镤。把数量从 12 改成 5,输出与前 5 行逐字相同——每条只消耗一个随机数,第 6 条不会反过来影响前 5 条。

换个种子看差异。种子 liuquan 的前 5 条是硫(S,Z=16)、鿔(Cn,Z=112)、锌(Zn,Z=30)、镆(Mc,Z=115)、碳(C,Z=6),与默认批没有任何共同项。再把类别锁到卤素、种子仍是 20261012,前 5 条是碘(I,Z=53)、鿬(Ts,Z=117)、砹(At,Z=85)、砹、砹——池长从 118 缩到 6,重复立刻显形,这正是独立抽取、不查重的必然表现。

类别与周期分布对照表

下表是十类分类的元素数与 Z 范围,合计 118。类别筛选下拉框的选项与计数即出自此表。

类别元素数Z 范围首尾元素
碱金属63 ~ 55Li → Fr
碱土金属64 ~ 88Be → Ra
过渡金属3821 ~ 112Sc → Cn
后过渡金属1213 ~ 116Al → Lv
类金属65 ~ 52B → Te
非金属71 ~ 34H → Se
卤素69 ~ 117F → Ts
稀有气体72 ~ 118He → Og
镧系1557 ~ 71La → Lu
锕系1589 ~ 103Ac → Lr
合计1181 ~ 118H → Og

下表是 7 个周期的元素数,2、8、8、18、18、32、32 合计 118。第 6、7 周期各 32 个,正是因为镧系与锕系各 15 个都塞进了这两行。

周期元素数Z 范围
121 ~ 2
283 ~ 10
3811 ~ 18
41819 ~ 36
51837 ~ 54
63255 ~ 86
73287 ~ 118

结果边界与舍入说明

常见问题

同一个种子为什么每次生成的结果都一样?换一批要怎么换?

因为用的是确定性伪随机数发生器,状态按(s × 1103515245 + 12345)对 231 取模推进,起点由种子折叠值决定,同一种子必然走出同一条序列。想换一批就改种子:种子 20261012 第一批是钐、钔、锿、镎、镤,换成 liuquan 就是硫、鿔、锌、镆、碳,两批没有共同项。

种子可以写汉字或英文吗?怎么变成数字的?

可以。折叠规则是逐字取字符码累加,再按位与 0x7fffffff 截到 31 位。写「氢」是一个字符,写「liuquan」是八个字符,写「20261012」也是八个字符——长度不同只是折叠值不同,不影响合法性。种子留空才会被拒绝。

为什么乘法必须写 Math.imul,直接写 s * 1103515245 不行吗?

不行。折叠值最大接近 231,乘 1103515245 的结果接近 261,远超双精度浮点能精确表示的 253,普通乘法会丢掉低位并让不同浏览器给出不同序列。Math.imul 做 32 位整数乘,结果与 C 语言实现一致,序列才能跨环境一致。

取下标为什么不用 s % 118 这样更简单的写法?

LCG 的低位比特随机性差,往往按很短的周期循环;118 是偶数,取余只会用到低位,序列会出现成对、成组的规律。本页先除以 2147483647 再乘池长,取到的是高位比特,分布更均匀,这也是站点既定口径。

常温下液态和气态元素各有几个,分别是哪几个?

常温常压(25 °C、1 atm)下液态只有 2 个:汞(Hg)与溴(Br);气态有 11 个:氢、氦、氮、氧、氟、氖、氯、氩、氪、氙、氡。其余元素在该条件下都是固态,个别如镓(熔点 29.76 °C)在手心里就能化,但不属于常温液态。

抽 60 条只有 118 种元素,为什么结果里有重复?

因为每次抽取相互独立、不查重。118 种里抽 60 条,理论互异数的期望约 48.9 种,重复十几次是常态。想看互异数就翻到结果末行;若一批里要求不重复,应改用「无放回抽样」的逻辑,本页不做,因为它会改变序列语义、破坏同种子复现。

相对原子质量一列为什么小数位数不一致?

因为按各元素的常规原子量原值收录:氢 1.008 三位、氦 4.0026 四位、硫 32.06 两位、铅 207.2 一位,锝、钋、砹、氡、钫、镭、锕以后的无稳定同位素元素直接给质量数整数。统一位数反而会引入四舍五入误差,所以本页选择原样呈现。

输入的元素数据会上传吗?工具免费吗?

免费,无需注册。所有数据与计算都在当前浏览器本地完成,页面不联网、不写 localStorage,种子与数量只用于本次计算。

相关工具