使用方法
打开页面即载入一组默认参数:抽取数量 8、无放回模式、随机种子 20251012,结果区直接给出山楂、橄榄、树莓、无花果、茄子、南瓜、桑葚、苹果八种水果及其分类与植物学要点。修改数量或种子后按回车,或点击“开始抽取”,三张表同步刷新:概况卡、分类统计与结果清单。数量范围 1 到 31,种子范围 0 到 2147483647,超出范围会给出具体提示,例如数量填 40 时会被告知应在 1 到 31 之间。
两种模式对应两种语义。无放回模式先对 31 条题库做 Fisher-Yates 洗牌,再取前 n 个,保证结果不重复,数量上限就是 31;有放回模式每次独立随机,结果可能重复,此时概况卡会给出“去重后几个、重复几次”。种子相同则结果完全可复现,换一个种子就得到另一组确定的结果,不存在“再点一次换个结果”的不确定性。
结果清单默认显示前 12 行,点击“加载更多”展开全部;复制按钮输出制表符文本,导出按钮下载带 BOM 的 CSV 文件。全部运算在当前浏览器内完成,题库固定在页面数据里,不请求任何远程接口。
能解决什么
日常叫“莓”的水果和植物学上的浆果大多不是一回事:番茄、香蕉、茄子、辣椒在植物学上都是真浆果,而草莓不是——草莓的可食部是膨大的花托,表面那些小点才是真正的果实。这个反差是口语分类与植物学分类脱节最典型的例子,也是本页组织题库的依据。随机抽几种水果,顺带把每条的分类与要点列出来,比单独背分类表更容易记住。
本页在站内目录中的名称是随机水果生成器。它适合两类场景:一是聚会、课堂、问卷里需要一组不重复又带知识点的水果名单;二是核对某份“水果分类”资料是否把仁果和聚花果放错。题库按心皮与花托的发育方式分类,不按味道、颜色或食用部位分,因此抽到黄瓜、南瓜这类“菜市场里不是水果”的条目时,分类一栏仍然成立。
原理与变量
随机数采用线性同余发生器:s=(Math.imul(s,1103515245)+12345)&0x7fffffff,取词用 Math.floor(s/2147483647*len)。这里必须用 Math.imul 做 32 位整数乘法:s 乘 1103515245 会超出 2 的 53 次方,用普通乘法会丢掉低位精度,同一种子每次结果都会不同;Math.imul 保留低 32 位,&0x7fffffff 把结果压回 31 位正整数,保证任何浏览器、任何次运行都得到同一串数。
无放回:Fisher-Yates 洗牌后取前 n;有放回:每次 rnd(len) 独立取词
无放回模式执行标准 Fisher-Yates:从数组末尾往前,第 k 步用 rnd(k+1) 取一个下标与第 k 个元素交换,全部交换完再取前 n 个。有放回模式直接调用 n 次 rnd(len),每次都可能命中同一条。两种模式共用同一个 LCG,种子默认 20251012,因此默认输出固定为山楂、橄榄、树莓、无花果、茄子、南瓜、桑葚、苹果;切到有放回后同种子输出柠檬、樱桃、李、无花果、金柑、猕猴桃、杏、李,其中李出现两次,去重后 7 个。
完整示例
默认参数走一遍:31 条题库、7 个分类、无放回、种子 20251012。洗牌后前 8 个依次是山楂(仁果)、橄榄(核果)、树莓(聚合果)、无花果(聚花果)、茄子(真浆果)、南瓜(瓠果)、桑葚(聚花果)、苹果(仁果)。分类统计为仁果 2 个、核果 1 个、聚合果 1 个、聚花果 2 个、真浆果 1 个、瓠果 1 个,无放回保证八条互不重复。
把模式切到有放回、数量与种子不变,输出变成柠檬(柑果)、樱桃(核果)、李(核果)、无花果(聚花果)、金柑(柑果)、猕猴桃(真浆果)、杏(核果)、李(核果):李出现两次,去重后 7 个、重复 1 次。同一种子重复点击“开始抽取”,结果逐字不变;把种子改成 20251013,则得到另一组确定结果,可用于对比不同种子的分布。
对照表
题库共 31 条,按 7 个植物学分类组织:真浆果 6 条、聚合果 3 条、核果 7 条、仁果 3 条、柑果 5 条、瓠果 4 条、聚花果 3 条。下表按题库原序列出全部条目与要点。
| 水果 | 分类 | 植物学要点 |
|---|---|---|
| 葡萄 | 真浆果 | 整串来自一个花序,果皮果肉都肉质化 |
| 番茄 | 真浆果 | 植物学上是浆果,法律上曾是蔬菜(1883 年美国 Nix v. Hedden 案按蔬菜征关税) |
| 猕猴桃 | 真浆果 | 可食部是胎座,那一圈黑点是蜜腺 |
| 香蕉 | 真浆果 | 栽培种无籽,果肉由子房壁发育,野生种有硬籽 |
| 茄子 | 真浆果 | 与番茄同科,果肉海绵状来自心皮 |
| 辣椒 | 真浆果 | 辣味物质辣椒素含量决定史高维尔指数 |
| 草莓 | 聚合果 | 日常叫莓但植物学是聚合果,可食部是膨大的花托,表面小点才是真果 |
| 树莓 | 聚合果 | 一朵花多个离生雌蕊,摘下时留下中空的花托 |
| 黑莓 | 聚合果 | 与树莓同属,区别是摘下时花托留在果上 |
| 桃 | 核果 | 内果皮硬化成桃核,中果皮是果肉,外果皮是那层绒毛皮 |
| 李 | 核果 | 与桃同属,果面无毛、果核表面有穴点 |
| 杏 | 核果 | 核仁含苦杏仁苷,苦仁不可食 |
| 樱桃 | 核果 | 果柄长、果核光滑,与欧洲酸樱桃是两个种 |
| 橄榄 | 核果 | 鲜果极涩,必须发酵或碱液脱涩后才可食 |
| 芒果 | 核果 | 扁平的纤维核紧贴果肉,花前雌雄异株问题影响产量 |
| 枣 | 核果 | 干枣的糖以果糖为主,冷藏后甜感更明显 |
| 苹果 | 仁果 | 可食部主要是花托,真正的果是芯里那层纸一样的结构 |
| 梨 | 仁果 | 果肉石细胞多,品种间粒度差异决定口感 |
| 山楂 | 仁果 | 果肉紧实、酸度高,常加工后食用 |
| 橙 | 柑果 | 外果皮革质含油胞,瓤瓣其实是内果皮向内突起形成的汁囊 |
| 柚 | 柑果 | 瓤瓣易分离,中果皮发育成厚白瓤 |
| 柠檬 | 柑果 | 柠檬酸含量可达 5% 以上,是柑橘里最酸的栽培类 |
| 橘 | 柑果 | 果皮疏松易剥,瓤瓣 10 左右 |
| 金柑 | 柑果 | 果皮可连肉一起吃,因为油胞不苦 |
| 西瓜 | 瓠果 | 葫芦科下位子房发育,胎座发达,无籽是三倍体 |
| 哈密瓜 | 瓠果 | 厚壁果肉来自中内果皮,网纹是果皮开裂愈合痕 |
| 黄瓜 | 瓠果 | 嫩果即食,老熟后果皮木质化、种子变硬 |
| 南瓜 | 瓠果 | 果肉碳水以果胶为主,长放后淀粉部分转糖 |
| 菠萝 | 聚花果 | 整个花序参与发育,表面每一个眼是一朵花留下的痕迹 |
| 无花果 | 聚花果 | 肉质部分是向内凹陷的花托,花藏在里面靠小蜂传粉 |
| 桑葚 | 聚花果 | 一朵雌花序发育,每一个小颗粒是一朵花的子房 |
分类依据是心皮与花托的发育方式:真浆果由单朵花的子房壁发育且果皮果肉全部肉质化;核果的内果皮硬化成核;柑果的外果皮革质含油胞、瓤瓣是内果皮向内突起形成的汁囊;瓠果是葫芦科下位子房发育、胎座发达的类型;聚合果来自一朵花多个离生雌蕊;仁果的可食部主要是花托;聚花果则由整个花序参与发育。
结果边界与舍入
数量 n 为 1 到 31 的整数,填小数会被截断为整数前先提示修改,超出范围直接拒绝并说明合法区间。种子为 0 到 2147483647 的整数,正好对应 LCG 的状态空间上界;负数或超出上限的种子会被拒绝。取词公式 Math.floor(s/2147483647*len) 只做向下取整,不涉及四舍五入,因此同一状态的输出永远一致。
无放回模式下数量上限 31,等于题库条数;有放回模式数量同样限制在 31 以内,避免一次输出过长。概况卡中的“去重后”与“重复次数”只统计本次结果:无放回时二者分别为 n 与 0,有放回时按实际命中计算,默认八次有放回的结果去重后 7 个、重复 1 次。
常见问题
番茄和茄子为什么是浆果?
植物学上的浆果指由单朵花的子房壁发育、果皮果肉全部肉质化的果实。番茄、茄子同科,果肉由心皮发育,符合真浆果定义,和味觉上的“菜”无关。
草莓为什么不是浆果?
草莓的可食部是膨大的花托,表面那些小点才是真正的果实(一群小核果),整体属于聚合果。日常叫“莓”的树莓、黑莓同理,只有葡萄这类单花序肉质化的才是真浆果。
苹果吃的到底是哪部分?
苹果是仁果,可食部主要是花托,芯里那层纸一样的结构才是真正的果皮。桃子正好相反:吃的是中果皮,丢掉的是硬化成核的内果皮。
菠萝和无花果为什么是聚花果?
整个花序参与发育。菠萝表面每一个“眼”是一朵花留下的痕迹;无花果的肉质部分是向内凹陷的花托,花藏在里面,靠小蜂传粉。
为什么种子相同结果就相同?
随机数由固定公式产生:s=(Math.imul(s,1103515245)+12345)&0x7fffffff,取词 Math.floor(s/2147483647*len)。没有调用系统时钟或真随机源,因此同种子必然复现。
有放回模式为什么会重复?
有放回每次独立调用 rnd(len),不把已抽条目移除,所以同一条可能被多次命中。默认八次的结果中李出现两次,去重后 7 个、重复 1 次。
黄瓜和南瓜也算水果?
按植物学分类算。它们是瓠果:葫芦科下位子房发育、胎座发达。本页按心皮与花托的发育方式分类,不按口感或市场习惯分。
题库能自己加条目吗?
不能。31 条题库固定在本页数据里,七类条数(6、7、5、4、3、3、3)与默认输出都由它决定,改动会破坏可复现性,因此页面不提供编辑入口。
相关工具
抽到水果之后,往往还要查热量、算维生素或看膳食比例。以下入口均使用站内实际分类路径: