种子让文本不再变化,以及它是怎么构建的
生成器如果不能复现文本,就无法回答“为什么是这段”。所以这里的算术是有种子的,而不是随机的。你在种子框里输入的任何内容,都会用 FNV-1a 折叠成 32 位数字,任何字符串都能变成数字;这个数字驱动 mulberry32,一个小型生成器,完整周期为 2^32,在每个浏览器和 Node 中行为完全一致。因此相同的种子和相同的设置,在每台机器上都会产出相同的文本;这正是有种子的情况可以逐词测试,而不是只能说“出来了点东西”的原因。
这里刻意不使用 Math.random,理由与 UUID 生成器相反:在那里,可预测的序列是弱点;在这里,可预测性正是全部功能。空种子框是一等选择,而不是缺失值,它意味着“使用时钟”,这也让表单旁的按钮有意义;实际使用的种子会随文本一起打印,因此任何文本都能通过把数字输回去而冻结。