你在玩遊戲時是否有時會覺得哪裡怪怪的?說好的隨機爆擊,但總覺得存在著甚麼規律似的,或許這裡面存在著甚麼神秘力量(神秘臉)。
開玩笑了,這其實是程序員在編程時還用一些演算法以達到看似真實隨機的結果,但實際不然,這種結果稱為偽隨機。
甚麼是偽隨機?
偽隨機(英語:Pseudorandomness),我們平日玩的部份遊戲和使用的部份應用程序,它們裡面的隨機數都不是真實的,而是偽隨機數,它們是由預先設定好的算法所生成的一個數列而已。
比如熱門遊戲《爐石戰記》就設有類似的機制,當抽取一定數量的卡包後就必定獲得高品質的卡牌。

- RARE - At least 1 rare or better in each pack(稀有-每包至少會出現1種稀有或更好級別的卡)
- EPIC - Average of 1 every 5 packs(史詩-平均每抽5包會出現1張)
- LEGENDARY - Average of 1 every 20 packs(傳奇-平均每抽20包會出現1張)
比如熱門手遊《明日方舟》也設有類似的機制,當連續抽卡50次後都沒抽中六星幹員,下一次抽牌出現六星幹員的機率會有所上升。

▲在【標準尋訪】中,如果連續50次沒有獲得6星幹員,則下一次獲得6星幹員的概率從原本的2%提升至4%。如果該次還沒有尋訪到6星幹員,則下一次尋訪獲得6星的概率由4%提升到6%。依此類推,每次提高2%獲得6星幹員的概率,直至逹到100%時必定獲得6星幹員。
除了卡牌遊戲,即時戰略遊戲 DotA 2 裡面也設有偽隨機算法,當英雄該次攻擊沒有觸發重擊效果,下一次攻擊時觸發重擊的機率就會有所上升。

▲近戰英雄上,"碎顱錘"的重擊有25%機率對目標造成眩暈,那麼第一次攻擊,他實際上只有大約8.5%機率觸發重擊,隨後每一次失敗的觸發會增加大約8.5%觸發機率,於是到了第二次攻擊,機率就變成大約17%,第三次大約25.5%,以此類推,在一次重擊觸發後,下一次攻擊的觸發機率又會重置到大約8.5%,那麼經過一段時間之後,這些深海重擊機率的平均值就會接近25%。(說明引用自DOTA2 WIKI)
再舉個生活栗子,音樂播放器不都有一個隨機播放模式,它會隨機順序播放清單中的歌,但其實這個也屬於偽隨機,如何驗證呢?

比如我的歌單中存在著 A.mp3
和 B.mp3
兩首歌,當播放完 A.mp3
,下一首將播放的歌有可能是 B.mp3
,但也有可能是 A.mp3
,它們兩者各佔50%,但實際上下一首播放的歌必然是 B.mp3
。
因為在開始隨機播放的那一刻,程序已經把接下來要播放的所有歌曲組成一個列表,只有在所有歌曲均已播放一遍的情況下才會進入下一個循環。
那甚麼才是真隨機?
以剛才的播放器為例子,按理來說無論目前正在播哪首歌,都不應該影響下一首要播放的歌。又如擲骰子一樣,無論現在擲出甚麼點數,都不會影響下一次擲出任何點數的機率,這種稱為真隨機(英語:True Random Distribution),又稱作純隨機。

(Photo by Suzy Hazelwood from Pexels)
題外話,有部份人認為每次擲骰子得出的結果是會受上一次結果所影響,這種想法稱為*賭徒謬誤。
*賭徒謬誤:是一種機率謬誤,主張由於某事發生了很多次,因此接下來不太可能發生;或者由於某事很久沒發生,因此接下來很可能會發生。(說明引用自維基百科)
那為甚麼開發人員在設計時不採用真隨機呢?要特意寫一些算法來偽造真隨機的現象呢?
答案很簡單,就是用戶體驗。
例如抽卡包,抽中六星卡的機率才5%,在真隨機的情況下,玩家是有可能抽上百包都沒法抽中一張六星出來,這是一種致命打擊,會讓玩家覺得這個卡池裡面根本沒有六星,是騙局!為了避免這種情況,同時照顧玩家的情緒,開發人員會設計一些算法提高用戶體驗。

抽卡數 | 10 | 11 | 12 | 13 | 14 | 15 | ... | 55 | 56 | 57 |
---|---|---|---|---|---|---|---|---|---|---|
抽中六星機率 | 5% | 7% | 9% | 11% | 13% | 15% | ... | 95% | 97% | 99% |
如上方表格,使用偽隨機方法,抽第57張卡牌時出現六星的機率將達到99%。

例如播放器,如果採用真隨機,那有可能會播放某一首歌很多遍,有些歌一次都沒播過,這也是對用戶非常不友好。

▲音樂平台 SoundCloud 中的隨機播放模式正是採用了偽隨機算法
對於以上這種為了提升用戶體驗,人工干預真實隨機性的設計,行內有個專有名詞把它們稱為 Pity Timer(保底機制)。
現時我們接觸到應用程式裡面的隨機都是偽隨機嗎?
坦白說我不知道,這個只有相關開發人員才知道。但有一點必須要明白,Pity Timer(保底機制)這種設計原意是為用戶帶來更好的體驗,假設人工干預隨機結果後不但沒有提升用戶體驗,反而是降低,我認為沒有一家開發商會做這種事,這根本是損人不利己的行為。
說白了,企業的目的是為了營利,提升用戶體驗可以令用戶繼續使用產品,這樣子才能夠作出進一步推廣,為企業帶來收益,有了收益就可以繼續開發出更好的產品給廣大用戶,然後賺取更大的收益。
不過不排除有些企業吃相比較差,一心想撈一筆錢後就跑路,於是故意做出一些反人類設計來欺騙消費者。因此勸告各位一句,同時也是提醒我自己,要理性消費,*課金抽卡這種行為可以做,但不能過度,有些事情是需要*血統加持才能做到。
*課金:這一詞來自日文(アイテム課金),正式名稱為微交易或小額付費(英語:Microtransaction),是指用戶在應用程式內消費獲取虛擬物品。
*血統:是一個網絡用語梗,形容運氣的高低,運氣好時會被稱作歐洲人,相反則稱作非洲人。

總結
- 平日所接觸到的大部份應用程序,裡面的隨機數都為偽隨機數。
- 真隨機是指無論事情重複發生多少遍,都不會影響下一次發生的結果。
- 開發人員為了提升用戶體驗而人工干預真實隨機性的設計稱為 Pity Timer(保底機制)。
- 請勿過度課金,要理性消費。
後話
這是叔首次嘗試以科普角度介紹遊戲的一些設計,由於本身並不是相關專業人士,文章裡面的資料都是透過互聯網取得,再加上自己的理解製作而成,所以並沒有講得十分深入,如果你們喜歡這個專題或者發現有內容是錯誤的,歡迎在下方留言給我,我都會看的。
資料參考:
特別鳴謝:
- 九叔
- 風之起靈
- moonmagian
- Cong
- Thinson_Luo
- 堂丸
發表評論
需要登錄才能評論,前往登錄。
還未有帳戶?前往註冊。