随机纬度生成器

按角度均匀或按地表面积均匀两种方式生成随机纬度,支持固定种子复现、十进制度与度分秒两种输出。默认用种子 20261108 各生成 5 条,打开就能对比两组结果。本页只做纬度这一维,不生成经纬度坐标。

按裸 Enter 即重算。
同一种子同一批结果完全一致,便于用例回放。
允许 -90~90,负值表示南纬。
必须大于下限。
十进制度输出保留几位,度分秒的秒固定两位。
按 value 切换采样公式。
度分秒示例:32°06'26.64"。
备注不参与纬度计算,仅随复制文本一起导出。
理论 P(|φ|>60°)(范围 -90~90):
角度均匀 33.333333%,面积均匀 13.39746%。
10000 次抽样实测(种子 20261108):角度 33.38%,面积 13.81%。

提示:五个数值框按裸 Enter 重算;备注框按 Ctrl/Cmd + Enter 重新生成。

固定种子复算对照表

项目数值补充
角度 132.107432°06'26.64"
角度 2-45.4138—
角度 3-74.7878—
角度 4-56.3056—
角度 5-78.3217—
面积 120.900720°54'02.52"
面积 2-30.3047—
面积 3-56.1991—
面积 4-38.7276—
面积 5-60.4866—
理论 角度33.333333%60/180
理论 面积13.39746%1-sin60

对照表是固定种子 20261108、范围 -90~90 的复算值;随输入变化的是上方结果区与概率区。

使用方法

打开页面时七个输入都已填好默认值:数量 5、种子 20261108、范围 -90~90、小数位 4、角度均匀、十进制度,结果区也直出了这 5 条示例纬度,不必先点按钮就能看到一批结果。想生成自己的数据,改这些输入即可:五个数值框按裸 Enter 立即重算;两个下拉框切换后也会刷新;备注是多行文本框,按 Ctrl/Cmd + Enter 重新生成,写的内容不参与计算,只随复制文本一起带走。数量允许 1~100、种子 1~2147483647、小数位 0~8、纬度上下限 -90~90 且下限必须小于上限;留空、填文字、填小数、超范围、下限不小于上限,都会给出具体报错,不会静默归零。

结果区分两块:带 role="alert" 的清单按你选的格式逐条列出纬度;概率区给出当前范围下的理论 P(|φ|>60°) 与 10000 次抽样实测值,用来直观看出两种分布的差别。三个「示例」按钮分别载入角度均匀 5 条、面积均匀 5 条、面积均匀转度分秒,方便逐组对比。下方 12 行复算对照表点「加载更多」展开到 14 行,可导出带 BOM 的 CSV 或按 TSV 复制。

先把范围说清楚:本页只做纬度这一维,从 -90° 到 90°,负值表示南纬;它不生成经度,也不拼出经纬度坐标对。需要完整坐标时请另找经度生成器,本页不会顺带补上 longitude。

这个工具能解决什么问题

给地理数据表造样本、做地图标注的随机落点、模拟气候或人口抽样、测试「纬度字段」的边界校验时,都需要一批随机纬度。随手对 -90~90 取均匀数当然能生成,但那会让落点在极地过度密集——因为高纬度的纬圈更短,同样的角度区间对应的地表面积更小。随机纬度生成器同时给出「按角度均匀」与「按地表面积均匀」两种方式,让你按用途选:测角度字段用前者,模拟地表随机落点用后者。

第二个用途是可复现。固定种子决定整批结果,同一个种子跑多少次都是同一批纬度,测试用例失败时可以原样回放;配合小数位、度分秒输出,还能直接造出带前导零的 DMS 字符串去测解析代码。概率区把理论值与 10000 次实测值并排列出,也能拿来验证「面积均匀到底有没有把极地占比压下去」。

本页不做这些事:不生成经度、不生成经纬度坐标对、不画地图、不做投影、不联网查地名,也不换算海拔或时区。它只回答一个问题:给定数量、范围、分布模式与种子,一批随机纬度是多少。

采样原理与变量

核心结论是按角度均匀 ≠ 按地表面积均匀。把地球近似成球,一条纬度带的表面积元是 dA ∝ cos φ dφ:纬度越高 cos φ 越小,同样的 dφ 对应的面积越小。由于 d(sin φ) = cos φ dφ,要让落点在地表上均匀,正确的做法是对 sin φ 取均匀,再反解 asin,而不是对 φ 取均匀。

于是两种模式各有一条公式。角度均匀:φ = lo + (hi − lo)·u,u 是 0~1 的均匀随机数。面积均匀:φ = asin( sin(lo) + (sin(hi) − sin(lo))·u ) · 180/π,先把上下限映射到 sin 空间做线性插值,再反解回角度。默认 lo=-90、hi=90 时,sin(lo)=-1、sin(hi)=1,公式化简为 φ = asin(2u − 1)·180/π。

这个差别可以用 P(|φ|>60°) 量化。角度均匀时,|φ|>60° 的角度跨度是 60°(南北各 30°),占全范围 180° 的 60/180 = 33.333333%;面积均匀时占比是 1 − sin60° = 13.39746%,因为极地那两条带实际面积很小。用固定种子 20261108 抽 10000 次,实测分别是 33.38% 与 13.81%,和理论值吻合但带抽样波动。

其余变量:随机数用统一固定种子发生器 s=(Math.imul(s,1103515245)+12345)&0x7fffffff,返回 u=s/2147483647;纬度范围 clamped 在 -90~90;小数位 dp 决定十进制度保留几位。十进制度转度分秒:取绝对值后 d=⌊|φ|⌋、m=⌊(|φ|−d)×60⌋、s=((|φ|−d)×60−m)×60,秒保留两位并补零到两位,符号单独加回,所以 32.1074° 得 32°06'26.64"、20.9007° 得 20°54'02.52"。

完整示例(固定种子 20261108)

范围 -90~90、数量 5、小数位 4,页面用同一套发生器算出两组结果:

这串数字都不是写死在页面里的答案,而是把种子、范围、模式代入同一套公式现算出来的。点三个示例按钮可以逐组回放;把范围收窄到 0~90 只取北半球、把小数位改成 2、把输出切成度分秒,结果区与概率区会一起重算。

输入范围与对照表

对照表默认 12 行:前 5 行是角度均匀的固定种子结果,接着 5 行是面积均匀的结果,最后 2 行是两种分布的理论 P(|φ|>60°);点「加载更多」再展开 10000 次实测的两行,共 14 行。第 3 列给出首条的度分秒换算或计算依据(60/180、1-sin60)。表可导出带 BOM 的 CSV,Excel 打开不乱码,也可按 TSV 复制粘进表格软件。

这张表是固定种子复算值,不是当前输入的实算结果;随输入变化的是上方结果区与概率区。数量 1~100、种子 1~2147483647、小数位 0~8、纬度上下限 -90~90 且 lo<hi;任一填错都会弹出具体报错,方便一眼看出是哪一项不合法。

结果边界与舍入说明

常见问题

角度均匀和面积均匀到底差在哪?

差在有没有补偿 cos φ。球面上一条纬度带的面积正比于 cos φ dφ,高纬度纬圈短、实际面积小。对 φ 直接取均匀,等于给极地和赤道同样的角度权重,落点就会过度集中在极地;面积均匀改成对 sin φ 取均匀再 asin,落点才在地表上均匀。P(|φ|>60°) 从 33.333333% 降到 13.39746% 就是这个差别的量化。

为什么面积均匀的高纬度结果变少了?

因为 asin 反解把大部分均匀随机数映射到了中低纬。sin φ 在 -90~90 上从 -1 到 1 线性变化,u 均匀时 asin(2u−1) 在 ±90° 附近变化极快、在 0° 附近变化平缓,于是落点更多落在中低纬。这不是 bug,正是按地表面积均匀应有的表现。

33.333333% 和 13.39746% 是怎么算出来的?

角度均匀时 |φ|>60° 的跨度是南北各 30°、共 60°,占 180° 全范围的 60/180=33.333333%。面积均匀时按 sin 测度算,占比是 1−sin60°=13.39746%。页面概率区按当前 lo、hi 用同一套公式现算,默认 -90~90 就得到这两个数。

实测 33.38% / 13.81% 为什么不正好等于理论?

因为那是固定种子 20261108 抽 10000 次得到的频率,属于抽样估计,本来就带随机波动;样本越多越接近理论值,但不会每次都精确相等。换一个种子或改动范围,实测值也会变,理论值则只由范围与分布模式决定。

度分秒里的秒为什么要补零?

为了让度、分、秒各段位数固定,便于字符串解析与展示对齐。20.9007° 算出的秒是 2.52,补零后写成 20°54'02.52",否则 2.52 只有一位整数,容易被误读。页面用「秒字符串长度不足 5 就前面补 0」实现,同时分也补到两位。

会顺带生成经度或经纬度坐标吗?

不会。本页只做纬度这一维,从 -90° 到 90°,负值表示南纬。经度是独立的一维,需要完整坐标请另用经度生成器;本页既不生成 longitude,也不把两者拼成坐标对,更不画地图或联网查地名。

换种子或改范围,结果会怎么变?

固定种子决定整批随机序列,同一种子、数量、范围与模式下结果完全一致,便于用例回放;改种子会让整批变化。把 lo、hi 收窄(例如 0~90 只取北半球),两种采样公式都会按新范围重新映射,概率区的理论与实测也跟着重算。

我填的范围和种子会被上传吗?

不会。随机数、三角函数、asin 反解与度分秒换算全部在当前浏览器里执行,页面不发起任何网络请求,也不写 Cookie 或 localStorage。你在开发者工具的 Network 面板里反复改范围、点几次生成,面板始终是空的。

相关工具