故事启动器

把「写不出开头」这一步外包出去:从角色、场景、冲突三张池子里各抽一条,按固定句式拼成一段故事开头。可选奇幻、科幻、悬疑三种体裁给基调,组合池共有 14400 种,足够你写完一整年也不重样。所有抽取都在本地完成,不保存、不上传。

(以下为固定演示,刷新页面后由脚本重新随机生成一批)
1. 在暴雨中的火车站,一个流浪乐手正面临被误认为是叛徒。
2. 在悬浮在云端的城市,一个退休侦探正面临必须在天亮前做出选择。
3. 在荒废的游乐园,一个失忆的画家正面临记忆开始错乱。
4. 在深夜的便利店,一个沉默的邮差正面临被夺走了声音。
5. 在燃烧的灯塔,一个叛逆的公主正面临要在两个爱人之间抉择。

使用方法

  1. 在「生成数量」里填 5(示例值),允许 1~20 的整数。填 5 就是一次给出 5 条互不相同的开头,方便你挑一条往下写;填 1 则只给一条,适合每次只想要一个方向。
  2. 在「体裁」里选 不加体裁(示例值),也可以选奇幻、科幻或悬疑。选了体裁后,每条开头会带上对应的基调括注,例如「(科幻)」;选「不加体裁」则只拼三要素,留给你自己定调。
  3. 点「生成灵感」,或直接在「生成数量」框里按 Enter。下方结果区立即出现一批开头,每条形如「在{场景},一个{角色}正面临{冲突}」。
  4. 点「复制结果」把这一批开头按纯文本复制,可直接粘进文档或聊天框继续写;点「载入示例」把数量和体裁恢复成默认值并重新生成一批。
  5. 想换一批就再点一次「生成灵感」——每次都是从 14400 种组合里重新等概率抽取,前面抽过的不影响后面,所以会出现新组合,也可能偶尔撞上之前的。

这个故事启动器能解决什么问题

一是替你越过「第一句最难写」的门槛。很多人不是没故事,而是卡在白纸面前不知从哪落笔。故事启动器把开头拆成角色、场景、冲突三块,先给你一个具体情境,你只要顺着写下去,比对着空白页发呆快得多。

二是用随机碰撞出你不会主动想到的组合。你会习惯性地让「侦探」待在「案发现场」,但本页可能把侦探丢进「狂欢节」去面对「必须拯救一个陌生人」。这种跨池的错位是随机工具独有的价值:它不模仿你的口味,只负责把不相干的零件摆到一起。

三是给写作练习和教学提供随时可用的题面。老师让学生每人抽一条写 200 字、剧本工作坊用冲突卡做即兴练习、桌游主持人临时补一个 NPC 处境,都可以直接拿本页的结果当起点,不必事先准备卡片。

四是把「随机但不偏置」这件事讲清楚。池子里的 30 个角色、24 个场景、20 个冲突每次被抽中的机会完全相等,不存在「热门角色更容易出现」,你看到的分布只取决于你的抽取次数。本页不做这些事:不续写后续情节、不按你的喜好加权、不判断哪条更好——它只负责把开头递给你,写下去是你的事。如果你要的是「按题材热度推荐」,那是另一个问题,本页不提供。

生成原理:三要素池与等概率抽取

三张池子,各自独立抽取。角色池 30 条、场景池 24 条、冲突池 20 条。一次生成就是从三张池子里各取一条下标,再用固定句式拼成一句话,所以不加体裁时总组合数是 30 × 24 × 20 = 14400 种;勾选体裁后,体裁本身也是一张 3 选 1 的池子(奇幻 / 科幻 / 悬疑),组合规模扩到 14400 × 3 = 43200 种。

取下标走浏览器原生随机数。本页用 crypto.getRandomValues(new Uint32Array(1)) 拿到 0 到 4,294,967,295 之间的均匀整数,再用拒绝采样把它折成 0 到(池大小−1)的等概率下标——这一步的取数思路与本站已改造的魔法 8 球一致,目的是消除「取模余数造成的轻微偏置」,这里不展开数学,只说明结论:每个条目被抽中的概率严格相等。

三条下标相互独立,不洗牌。一次生成里的第 1 条和第 2 条各自重新取随机数,彼此无关;同一池子里的条目也不会「用完即弃」。这意味着连着两次抽到同一条角色是允许的,概率就是 1 / 30。如果你希望「这一批 5 条互不重复」,那是展示层的事,本页在单次生成内默认允许重复,因为三要素组合本来就多达上万种,实际撞上的概率极低。

句式是固定的,变量是随机的。输出模板只有一句:「在{场景},一个{角色}正面临{冲突}(体裁)。」骨架不变,变的是三个插槽里填进来的具体内容。这样做的好处是结果永远是一句通顺的中文,不会出现语法残缺的半句话;代价是风格统一,想要更花哨的句式得你自己改。

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

示例条件:生成数量填 5、体裁选「不加体裁」。逐项对照:

把上面的数字落到操作上:如果你点一次「生成灵感」拿到 5 条,其中恰好有一条和上周写过的撞了设定,那不是工具出故障,只是 14400 分之 1 的小概率事件在大量使用下总会遇到几次。真正该关心的不是「会不会重复」,而是「重复了换一条重抽就行」。

三要素对照表与组合规模

下表列出三张池子的大小与若干示例条目,方便你确认本页抽样的来源范围。组合规模按「角色 × 场景 × 冲突」相乘得到,不是估出来的。

池数量示例条目(非穷举)
角色30流浪乐手、退休侦探、失忆的画家、笨拙的巫师学徒、贪婪的商人、沉默的邮差、叛逆的公主、逃亡的科学家
场景24暴雨中的火车站、被遗忘的图书馆、悬浮在云端的城市、深夜的便利店、即将沉没的孤岛、霓虹闪烁的地下市场、万年冰川洞穴、喧闹的嘉年华
冲突20必须隐瞒真实身份、被误认为是叛徒、发现一份假遗嘱、与宿敌被迫同行、丢失了唯一的地图、收到匿名威胁信、必须在天亮前做出选择、被施了无法解除的诅咒
体裁(可选)3奇幻、科幻、悬疑(选「不加体裁」时不计入组合,组合池保持 14400)
组合数是怎么乘出来的
  • 不加体裁:30 × 24 × 20 = 14400 种开局,每一种都是一个(角色,场景,冲突)三元组;
  • 加体裁:再乘 3,得到 14400 × 3 = 43200 种,每种多带一个基调标签;
  • 池子大小是人工定的:30 / 24 / 20 不是为了凑整,而是「够写又不撑爆一屏示例」的取舍——组合已经超过一万种,远大于一个人会逐条试写的量;
  • 想扩大或缩小池子,改的是对应数组的长度,组合数会按乘法自动跟着变,不存在独立的「总数」需要手动维护。

输入范围、边界与随机性说明

常见问题

生成的故事开头能直接当成成品用吗?

不能,也不该。本页只负责把「角色 + 场景 + 冲突」拼成一个通顺的开头,后续的人物动机、情节走向、结尾全要你自己写。它最适合当破冰题面和练习起点,而不是代笔。把开头粘进文档后,请顺着冲突往下发展,别指望工具替你把故事写完。

为什么连点两次会出现很像的设定?

三张池子各自有 30 / 24 / 20 条,单次生成 5 条时,某条角色撞上之前的概率是 1/30,场景 1/24,冲突 1/20,三者同时撞上才是 1/14400。你感觉「很像」多半只是角色或场景单独重复了,这在有放回抽样里完全正常,不是工具在偷懒。想避开就换一批重抽。

选了体裁之后,组合真的多出三倍吗?

是的。体裁是一张独立的 3 选 1 池子(奇幻 / 科幻 / 悬疑),它和角色、场景、冲突是相乘关系,所以是 30 × 24 × 20 × 3 = 43200。选「不加体裁」等价于体裁维度只有 1 个取值(空),组合数回到 14400。两种模式下三要素的抽取方式完全一致,区别只在句尾有没有基调括注。

抽到的组合会不会偏向某些热门角色?

不会。每个条目被抽中的概率严格相等,因为下标来自拒绝采样后的均匀整数,没有按出现频率或任何权重加权。你看到的「某类角色出现多」要么是样本容量小造成的波动,要么是你自己多生成了几批凑巧撞上,随机源本身没有偏好。想验证可以在开发者工具里反复点并记录分布。

为什么不用 Math.random() 而用 crypto?

两者都能生成随机数,但 crypto.getRandomValues 由操作系统熵源驱动,质量更高,且本页用它配合拒绝采样消除了「取模余数」带来的轻微偏置,保证 14400 种组合每种出现概率完全相同。代价只是极小概率的一次重试,换来的是严格均匀,对写作题面这种场景够用且更干净。

能不能让一批里的几条互不重复?

本页默认允许重复,因为 14400 种组合下实际撞上的概率极低。如果你做教学练习要求「每人拿到的题面不重样」,可以分多批生成、手动去重,或把生成数量调小、分批发放。工具本身不维护「已发过」的集合,因为那需要跨页面记忆,会和「刷新即清空、不上传」的设计冲突。

生成的设定会自动保存吗?下次打开还在吗?

不会。结果只存在当前页面内存里,不写 localStorage 也不写 Cookie,刷新、关闭标签页或重新打开都会清空。需要留存请在离开前点「复制结果」粘到自己的文档里。这样设计是为了避免你的构思被意外留在公用设备上。

故事启动器和名字生成器有什么区别?

名字生成器只产出「一个人叫什么」,而本页产出的是「一个情境」——它把角色、场景、冲突三块一起给你,直接构成可下笔的开头。两者都是随机生成器,但本页的主词是故事开头而非人名,不会去抢命名类工具「工商核名、域名查重」那类能力;如果你只想要一个角色名字,请去对应的名字生成器。

相关工具