是的,使用 故事劇情產生器 時,兩次點擊可能產生相同的劇情。每次抽取都是獨立的,而工具的素材池是有限的,因此重複是在有限庫存下隨機機制的必然結果。這個小工具不會追蹤你上一次的點擊,不會記住剛才產生的內容,也不會在某個組合出現後將其抑制。Web Crypto 的拒絕抽樣法會讓每個素材池中每個合格項目被選中的機率相等,但這種公平性是針對「每次抽取」而言,而非跨抽取,而且並不會創造永久的唯一性。以單一類型與基調組合來看,每個類型各有六位主角、三個場景、四個目標、每種基調各有兩個衝突點,以及四個轉折,五段組合的最大可能數量為 6 × 3 × 4 × 2 × 4 = 576 種。這個樣本空間小到足以讓重複在正常使用過程中出現,又大到足以讓每次點擊仍感覺新鮮。把重複視為預期行為而非錯誤,才是正確的心態。

can two clicks produce the same plot when using story plot generator
兩次點擊會產生相同的劇情嗎?故事劇情產生器

故事劇情產生器如何建構一個前提

在故事劇情產生器中點擊一次,並不會拉出一個完整的故事。它會從五個可見的素材池中各拉出一個元素,並透過固定的文法範本將其串接起來。這五個素材池分別是主角、場景、目標、衝突點,以及轉折。介面會在段落下方顯示每個被選中的組成部分,讓你能清楚看見哪些字串被組合在一起,這也讓段落呈現在眼前時,編輯起來更加容易。

每個素材池的大小是由實作固定的:

素材池大小來源
主角6跨類型與基調共用
場景(每種類型)3隨冒險、懸疑或思辨類型切換
目標4跨類型與基調共用
衝突點(每種基調)2隨希望、緊張或喜劇基調切換
轉折4跨類型與基調共用

就單一類型與基調組合而言,最大可能的不同組合數為 6 × 3 × 4 × 2 × 4 = 576 種。橫跨全部九種類型與基調組合來看,上限為 9 × 576 = 5,184 種。這個工具不會告訴你剛剛抽到的是哪一組組合,不會記錄歷史,不會保存狀態,也不會保證它之前沒抽過同一組組合。兩次點擊內出現重複,是有限空間中獨立隨機選取的正常結果。

為什麼兩次點擊可能產生相同的劇情

重複行為來自三個特定屬性,這些都明載於其已驗證的工具契約中:

  1. 每次抽取都是獨立的。 每次點擊都會從瀏覽器的 Web Crypto 介面請求一個新的 32 位元無號整數,執行拒絕抽樣,並將該數值對應到相關素材池中的位置。第 N 次抽取的內容不會影響第 N+1 次抽取。
  2. 素材池是有限的。 在所選的類型與基調組合中,最多只有 576 種組合,樣本空間小到任何兩次連續點擊都有實質機率抽到相同的五段字串,而在一個數十次點擊的工作階段中,碰撞必然會發生。
  3. 工具不會追蹤歷史。 沒有伺服器、沒有帳號、沒有保存的狀態、沒有 localStorage 記錄,也沒有防重複邏輯。重新整理頁面或離開分頁也會清除任何工作階段狀態,因此下一次抽取與上一次完全獨立。

Web Crypto 拒絕抽樣在每次抽取中是公平的:工具會丟棄數值範圍中不完整的尾段,使得當素材池長度無法整除 2^32 時,模數捷徑不會稍微偏向索引較小的項目。但該契約明確指出,公平性是「針對每個合格項目」,而非「針對跨抽取的每個組合」。它不會創造永久的唯一性,也不代表兩次點擊的結果必然不同。

如何在下次點擊時取得不同的前提

  1. 選擇冒險、懸疑或思疑小說,然後選擇希望、緊張或喜劇的衝突基調。
  2. 點選 產生劇情,並檢視結果中顯示的主角、場景、目標、衝突點與轉折。
  3. 若結果與先前點擊重複,請變更基調或類型。可能改變類型會將場景池切換為全新的三個選項;改變基調則會將衝突點池切換為全新的兩個選項。任何一個動作都會改變產生的組合。
  4. 若想保留相同的類型與基調,但強制產生不同的抽取,請再次點選 產生劇情。在所選素材池的 576 種組合中,兩次點擊內重複的機率雖低,但仍有可能,而在較長的工作階段中,重複將成為可預期的結果。
  5. 複製該前提,將通用細節替換為你自己的選擇,並在發表前檢視是否出現非預期的相似之處。

若你的優先考量是用最快速度達成唯一前提,最簡單的做法就是切換基調或類型選擇器。這兩種做法都會擴大搜尋空間,而不會改變抽取本身的運作方式。若想了解將重複轉化為具生產力輸出的更完整流程,請參閱 練習產生故事劇情:寫作者的例行流程。

當重複出現時該怎麼辦

重複不是錯誤,也不是工具組合用盡的訊號。在每類型與基調組合下有 576 種不同的五段字串,每次抽取仍維持在一個足以讓你驚喜的母體中,卻也小到讓你在數十次點擊的工作階段中應當預期會出現碰撞。

若你想在不變更類型或基調選擇器的情況下跳脫重複,可以直接編輯可見的組成部分。工具會將選中的字串顯示在段落下方,讓你保留其中一個欄位並替換其他欄位,將衝突點轉化為一種選擇而非單一事件,釐清目標為何在此刻重要,或探問轉折如何改變主角的理解。當前提包含具體的渴望、逐步升高的障礙、有意義的後果,以及一個能揭示性格的決定時,這個前提會變得更有用處,而你可以從概念的碰撞出發,親自動手完成寫作工作,進而達到這樣的境界。

若產生的組合感覺不協調,請再次抽取,或刻意將這種不協調作為創作上的限制來運用。這個工具不會對輸出進行評分或排名,因此重複並不比獨特抽取更差或更好作為起點。若想針對那次編輯流程採用聚焦的方法,請參閱 如何從可見素材池中打造獨特的故事劇情。

隨機機制實際如何運作

每次點擊會從瀏覽器的 crypto.getRandomValues 介面請求一個 32 位元無號值。接著工具會使用邊界拒絕抽樣法:它會拒絕大於或等於 floor(2^32 / poolLength) × poolLength 的數值,最多重試 128 次,然後以接受的值模 poolLength 對應到陣列位置。丟棄的尾段保證了當素材池長度無法整除 2^32 時,模數捷徑不會讓選取偏向索引較小的項目。

隨機來源若失敗或無效,會產生錯誤,而不是靜默地退而採用較弱或有偏差的方法。沒有 Math.random 的回退方案、沒有偽隨機種子,也沒有遠端 API 呼叫,這就是為什麼重新整理分頁就能取得乾淨的狀態。一切都在當前的瀏覽器分頁中執行,這個小工具不需要帳號、沒有儲存的歷史、沒有外部語言模型、沒有個人化設定檔,也沒有遠端內容動態消息。重新整理或離開頁面會清除當前狀態。

將重複化為創作工具

若你把這個工具視為結構化的寫作提示而非吃角子老虎機,重複反而可以是特色而非問題:

  • 在合作情境中,可產生一個前提,讓每位參與者分別提出不同的主角動機或後果。
  • 在課堂情境中,可要求學生保留場景但改寫基調,或保留基調但替換類型。
  • 在個人寫作情境中,可複製該段落,在下筆撰寫散文前先寫下十個問題。
  • 在修改練習中,可產生相同的組合兩次,分別改寫為不同的讀者群或類型,再加以比較。

由於這個工具從不發布、從不評分、從不主張原創性,也從不將其輸出與受著作權保護的作品進行比對,因此篩選重複,以及處理重複可能與現有作品巧合產生的相似之處的責任,仍在你身上。即使每個部分都是獨立挑選的,廣泛的故事結構仍可能與現有作品相似,因此在發表前請修改具有辨識度的細節、研究所參考的資料,並在分享前檢視完成作品的背景、敏感度、非預期的相似之處,以及適切性。