Re: [閒聊] Yasuo Bug?消失
※ 引述《ericpan70096 (廢文初心者)》之銘言:
: 如圖,有人知道為什麼會有爆擊嗎= =?
: 主符文:
: 征服者、凱旋、血脈、致命一擊
: 副符文:
: 即刻衝擊、噬血獵人
: https://i.imgur.com/t2g0vx9.jpg

前提: 小弟不是遊戲從業人員也不是資工專業
假設: 不是Bug產生的爆擊而是遊戲機制的話
猜測: 爆擊產生的機制是在每次攻擊的時候
隨即亂數產生一個介於0到100的數字
然後執行if條件判斷
if (RandomNumber 小於等於 CritChance)
then (Critical Strike)
在這個機制下,給定英雄爆擊率1%的話:
如果產生的隨機亂數是給到整數位(0-100,共101個情況),有0跟1兩個情況會爆擊,爆擊率變成2/101=1.98%
我們繼續增加亂數的小數位數,
1位小數的時候(0.0-100.0,共1001個情況),有0.0-1.0共11個情況會爆擊,爆擊率是11/1001=1.098%
2位小數的時候(0.00-100.00,共10001個情況),有0.00-1.00共101個情況會爆擊,爆擊率是101/10001=1.0098%
3位小數的時候(0.000-100.000,共100001個情況),有0.000-1.000共1001個情況會爆擊,爆擊率是1001/100001=1.00098%
4位小數的時候(0.0000-100.0000,共1000001個情況),有0.0000-1.0000共10001個情況會爆擊,爆擊率是10001/1000001=1.000098%
依此類推可以發現,當亂數的小數位數足夠多的時候,程式產生的爆擊率近似給定的英雄爆擊率
衍生出的問題變成,當給定英雄爆擊率0%並且產生的亂數是4位小數,那麼有1/1,000,001的情況會產生數值等於0.0000的隨機變數,而這個變數在條件判斷的時候會判定爆擊,換句話說,有大約百萬分之一的機率會在英雄0%爆擊的時候爆擊
當然,亂數的小數位給的越多,這個情況產生的機率越低,又或者,可以多寫一個條件判斷處理這個特例,但我猜這是一個Trade-off: 是不是有必要為了這個百萬分之一甚至更低的情況,在每次攻擊的時候都多執行一個if條件判斷
大guy4這樣
-----
Sent from JPTT on my Sony E6853.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 192.249.31.39
※ 文章網址: https://www.ptt.cc/bbs/LoL/M.1529381789.A.2F0.html
推
06/19 12:17, , 1F
06/19 12:17, 1F
推
06/19 12:17, , 2F
06/19 12:17, 2F
→
06/19 12:17, , 3F
06/19 12:17, 3F
→
06/19 12:17, , 4F
06/19 12:17, 4F
推
06/19 12:18, , 5F
06/19 12:18, 5F
推
06/19 12:18, , 6F
06/19 12:18, 6F
推
06/19 12:19, , 7F
06/19 12:19, 7F
→
06/19 12:19, , 8F
06/19 12:19, 8F
→
06/19 12:20, , 9F
06/19 12:20, 9F
推
06/19 12:20, , 10F
06/19 12:20, 10F
→
06/19 12:20, , 11F
06/19 12:20, 11F
條件判斷改成小於爆擊率的話,會有爆擊率100%卻不爆擊的情況,亂數4位小數的情況下,機率差不多一樣是百萬分之一,所以可以預期
[問卦] 有沒有100%爆擊率不爆擊的八卦
推
06/19 12:22, , 12F
06/19 12:22, 12F
→
06/19 12:32, , 13F
06/19 12:32, 13F
推
06/19 12:33, , 14F
06/19 12:33, 14F
推
06/19 12:36, , 15F
06/19 12:36, 15F
→
06/19 12:36, , 16F
06/19 12:36, 16F
※ 編輯: ravensweep (192.249.31.39), 06/19/2018 12:37:10
→
06/19 12:41, , 17F
06/19 12:41, 17F
推
06/19 12:41, , 18F
06/19 12:41, 18F
→
06/19 12:43, , 19F
06/19 12:43, 19F
→
06/19 12:43, , 20F
06/19 12:43, 20F
→
06/19 12:43, , 21F
06/19 12:43, 21F
→
06/19 12:45, , 22F
06/19 12:45, 22F
→
06/19 12:45, , 23F
06/19 12:45, 23F
→
06/19 12:45, , 24F
06/19 12:45, 24F
→
06/19 12:46, , 25F
06/19 12:46, 25F
→
06/19 12:49, , 26F
06/19 12:49, 26F
不錯,如果條件判斷改小於,隨機亂數在0到99之間抽就沒有這些問題了,那麼問題回到原PO的,為什麼0%爆擊率爆擊了,照理不管亂數怎麼抽,條件判斷一律不成立,不應該會爆擊。所以文章內寫的是猜測:P
推
06/19 13:01, , 27F
06/19 13:01, 27F
推
06/19 13:05, , 28F
06/19 13:05, 28F
※ 編輯: ravensweep (192.249.31.39), 06/19/2018 13:06:20
推
06/19 13:19, , 29F
06/19 13:19, 29F
沒錯,所以實際的機制九成九不是文中的方式
而是像其他版友說的,有補償機制的存在,但是實際的演算方式Riot沒有公布過,他們只有在很早期的Release Note中說過實際爆擊的機率跟你前幾次的爆擊情況有關,然後50%爆擊率在攻擊100次的情況下接近爆擊50次
猜測多半情況是一開始實際爆擊率低於50%,然後隨著你爆或不爆上下增減,最終大數下是50%
至於0%爆擊,應該是多次重複極度接近0,真的爆了就...爆了:P
→
06/19 13:19, , 30F
06/19 13:19, 30F
推
06/19 13:22, , 31F
06/19 13:22, 31F
推
06/19 13:28, , 32F
06/19 13:28, 32F
※ 編輯: ravensweep (192.249.31.39), 06/19/2018 13:35:49
→
06/19 13:47, , 33F
06/19 13:47, 33F
推
06/19 13:48, , 34F
06/19 13:48, 34F
推
06/19 13:48, , 35F
06/19 13:48, 35F
推
06/19 13:52, , 36F
06/19 13:52, 36F
推
06/19 14:09, , 37F
06/19 14:09, 37F
→
06/19 14:17, , 38F
06/19 14:17, 38F
→
06/19 14:18, , 39F
06/19 14:18, 39F
推
06/19 14:37, , 40F
06/19 14:37, 40F
推
06/19 14:41, , 41F
06/19 14:41, 41F
推
06/19 15:06, , 42F
06/19 15:06, 42F
推
06/19 15:17, , 43F
06/19 15:17, 43F
推
06/19 16:17, , 44F
06/19 16:17, 44F
推
06/19 16:25, , 45F
06/19 16:25, 45F
推
06/19 16:38, , 46F
06/19 16:38, 46F
→
06/19 17:09, , 47F
06/19 17:09, 47F
推
06/19 19:07, , 48F
06/19 19:07, 48F
討論串 (同標題文章)