Re: [閒聊] 昨天FGO破5000人的實況抽卡...這很FGO

作者: greydust (灰)   2017-11-24 18:31:45
※ 引述《asd823 (Jason)》之銘言:
: 這篇只單純聊抽獎機制猜測,之前再艦娘板也有大概聊過這種話題,
原文大量誤導我就不附上了.
直接講結論, 想要控制抽卡結果直接求神問卜都比在那邊想一堆有的沒的程式寫法有用
我是不知道為什麼一堆人對隨機數是建表產生的這麼情有獨鍾
這個問題可以分三個面向討論
一. 到底什麼是建表, 什麼是隨機數
除非真的有人去弄台儀器來產生真隨機數,
不然電腦的隨機數算法就是很單純的一個數字套公式算出下一個數字, 然後一直往下套
以C來說, 那個公式經過很巧妙的選擇使它在範圍內的數字都會跑過一次
也就是說把所有數字都跑過一次以後就會循環了
....
有沒有很熟悉? 這不就一堆人信誓旦旦說的建表?
所以我一直搞不懂建個表來跑轉蛋的理由在那. 建個公用表還要考慮一堆其他的問題.
就算其他語言的隨機算法不一樣, 大不了尻個C的隨機就解決了好嗎
別再建表啦!
二. 有表以後是否就可以破解轉蛋
一句話, 單機可以, 網路不可能.
古早時代的單機RPG因為會用到隨機的場合較少,
而且也沒有做把時間套進去當種子的概念,
所以很多遊戲可以靠重開機(種子固定)以後做固定動作產生固定結果刷寶
當然現代單機遊戲有可能可以, 理論上你只要把開遊戲時間精確到"毫秒"或是"微秒"
然後再搞清楚那些地方會呼叫隨機或重置隨機種子, 再破解它的運算方式
你就可以控制隨機數了
我要求不多, 麻煩來個人隨便找款5年內的遊戲示範上面這些步驟就好了
然後再講到網路遊戲, 除了上面那些要求以外,
你還得先知道伺服器啥時開機 (一樣精確到"毫秒"或"微秒")
還得知道你在進行操作的時候全世界有多少人做了其他會影響隨機的操作
然後恭喜, 你可以控制轉蛋結果了
三. 是否有人真的隨機數是建表一個一個抽的?
有, 單機遊戲我有看過. 它的目的是要維持在一個表內的機率恆定.
比如說角色可以升到50級, 這49級間總共會加100點生命
那我可以把這100點建個表隨機撒到49級內, 這樣每個人升每一級加的都不一樣
但50級時大家生命都會多100.
但是會這樣搞的人少之又少, 原因無他, 這超級麻煩
假設今天我想要改成加120點生命怎麼辦? 不就每個角色都要修正一次這張表
新創的角色表可以直接用新的建法
而如果有人已經30級了, 就要在剩下的20級內灑20點
已經50的人就要直接加20點
與其找自己麻煩還不如直接建一張表寫清楚每一級是多少生命, 大家都照著跑
用在轉蛋更是找自己麻煩
一般場合上面就講過了, 直接叫隨機出來用就好沒必要畫蛇添足再弄個表
但有時候可能大獎只要有限定數量
這種場合實務上多半是機率寫好以後再加個限制數量上去
比在那邊弄個公用表簡單多了
可能會有人講說公用表可以控制大獎要什麼時候出, 不會一開始就出
我是不知道講這句話是想把公用表建多大
是我的話就直接弄個前多少次抽獎絕對不會中大獎就好了
然後這種東西弄多了被玩家戳爆肯定就GG了
是我的話就不要搞那麼多怪招, 直接隨機數下去, 出事還可以學龍珠公佈原始碼, 多棒
不然弄個表到時候公佈原始碼被大家發現有公用表多不方便
作者: grandzxcv (frogero)   2017-11-24 18:34:00
單機隨機就FFXII的神器
作者: andy0481 (想吃比叡的咖哩)   2017-11-24 18:35:00
推這篇 那堆玄學抓時間大量抽幹嘛的根本意義不明..不過看龍珠那篇會有人覺得官方吃飽太閒去微調這種超麻煩又沒啥賺頭的行為...就知道類似謠言永遠不會停止的
作者: codemoon (moon)   2017-11-24 18:36:00
我自己碰過的手遊server 包含日韓的不過量不多 寫法都差不多 看你是用什麼語言 是java server就用java內建的random出一個數字 之後看 數字落在哪裡去判斷而已
作者: ssccg (23)   2017-11-24 18:50:00
明明random最好寫也沒什麼不對的,就是有人會去想很多...
作者: j9145 (Swordcane)   2017-11-24 18:51:00
微調機率不是謠言,是真的有在做,我就講到這
作者: ssccg (23)   2017-11-24 19:03:00
產生出亂數後還會用表定機率去分配哪個數字是對應哪張卡要調機率調這個對應範圍就好,不需要去動亂數產生的部分
作者: miname (>.<)   2017-11-24 19:28:00
我不知道你是用哪套lib啦,最好是會有每個值只會出現一次,出現第二次就是第二輪的亂數產生器
作者: orze04 (orz)   2017-11-25 03:18:00
廢話 你每次抽種子不用重設的嗎?
作者: miname (>.<)   2017-11-25 03:55:00
你貼的是GNU對C lib的實作,不是C standard用系統函數必須要把全部的抽獎導到同一支程式用同樣的seed那支程式還不能在別的地方call rand不然這輪會有一張卡抽不到所以必然要自己寫一份,那個程式設計師可能和我一樣不學無術,不會用linear congruential generator ,建表是合理的我以為你會拿C standard來打我臉的,只看某個版本的glibc是無意義的,程式設計師不應該去假設lib的實作方式,不然哪天lib改實作方式就GG了另外還要考慮到可能要解釋給檢察官聽和實作的困難度

Links booklink

Contact Us: admin [ a t ] ucptt.com