當(dāng)前位置: 首頁(yè) > 攻略教程 > 圖文攻略 > 英雄無(wú)敵3走進(jìn)科學(xué):無(wú)處不在無(wú)所不能的戰(zhàn)場(chǎng)隨機(jī)事件

英雄無(wú)敵3走進(jìn)科學(xué):無(wú)處不在無(wú)所不能的戰(zhàn)場(chǎng)隨機(jī)事件

時(shí)間:2023-08-10 22:55:00 編輯:易網(wǎng)VIP游戲門(mén)戶 閱讀:8

定義

隨機(jī)事件:主要是指游戲中有概率發(fā)生的事件,例如士氣大振,士氣低落,幸運(yùn)一擊,蠻牛發(fā)動(dòng)死神之眼,蜥蜴發(fā)動(dòng)石化效果等等。

英雄無(wú)敵3走進(jìn)科學(xué):無(wú)處不在無(wú)所不能的戰(zhàn)場(chǎng)隨機(jī)事件


現(xiàn)象

英雄無(wú)敵3的隨機(jī)事件算法,經(jīng)過(guò)多個(gè)版本的反復(fù)優(yōu)化,有這么幾個(gè)現(xiàn)象可以觀察到。(小輝使用的是英雄無(wú)敵3死亡陰影高清重制版)

一、隨機(jī)事件的出現(xiàn)次序,具有固定性。

在某次戰(zhàn)斗中,不能簡(jiǎn)單的重打來(lái)改變隨機(jī)事件。

最常見(jiàn)的,如果不做任何改變,反復(fù)重打,你會(huì)發(fā)現(xiàn)始終結(jié)果是一樣的。甚至部隊(duì)的攻擊上限下限都一樣,差別基本只有1,2點(diǎn)傷害?。?!

也就是說(shuō),必須做點(diǎn)別的什么事,比如戰(zhàn)斗中釋放魔法,比如進(jìn)戰(zhàn)斗前訪問(wèn)神廟增加士氣,才能改變隨機(jī)的結(jié)果。

注意:實(shí)戰(zhàn)觀察到,圣龍的恐懼不遵循這個(gè)固定性規(guī)律。不改變?nèi)魏螚l件,反復(fù)重打,圣龍的恐懼的對(duì)象有可能發(fā)生變化。

二、大數(shù)量下,隨機(jī)事件的概率統(tǒng)計(jì)值,具有穩(wěn)定性。

在很多次的戰(zhàn)斗模擬中,你可以精確的發(fā)現(xiàn)隨機(jī)事件的概率保持非常非常穩(wěn)定的次數(shù)。

舉個(gè)例子:

用2個(gè)防御特長(zhǎng)的英雄(孟斐拉和泰澤),級(jí)別修改到200級(jí)。(這樣,在測(cè)試中,所帶部隊(duì)的攻擊都互相只能造成1點(diǎn)傷害。)

孟斐拉帶25只巨蜥(20%概率石化,總生命1000),泰澤分別帶1000生命的部隊(duì)(100個(gè)戟兵,10個(gè)騎士、4個(gè)大天使、50個(gè)戰(zhàn)斗矮人)

這樣雙方都是1000生命,一回合內(nèi),我方攻擊1次,導(dǎo)致對(duì)方損失生命1,對(duì)方反擊,導(dǎo)致我方損失生命1;然后對(duì)方攻擊1次,導(dǎo)致我方損失生命1,我方反擊,導(dǎo)致對(duì)方損失生命1。

也就是說(shuō),一回合內(nèi),雙方各掉2點(diǎn)血,攻擊2次。(即使對(duì)方被石化,敵方也掉血了,敵方的被攻擊次數(shù)是沒(méi)影響的)

因此最后統(tǒng)計(jì)我方石化出現(xiàn)次數(shù),除以1000(因?yàn)閿橙艘还簿?000次被攻擊次數(shù)),就可以計(jì)算出來(lái)石化的概率了。

英雄無(wú)敵3走進(jìn)科學(xué):無(wú)處不在無(wú)所不能的戰(zhàn)場(chǎng)隨機(jī)事件

從修正結(jié)果上看,英雄無(wú)敵3的隨機(jī)事件的宏觀概率表現(xiàn)非常穩(wěn)定。

三、大數(shù)量下,有可能有多次小概率事件連續(xù)出現(xiàn)。

雖然整體數(shù)據(jù)上石化的隨機(jī)事件概率很穩(wěn)定,但是在實(shí)際測(cè)試過(guò)程中,巨蜥連續(xù)3次出石化是常有的事,連續(xù)5次石化的極端情況也出現(xiàn)過(guò);反過(guò)來(lái),連續(xù)20幾次不石化也非常常見(jiàn)。

這說(shuō)明英雄無(wú)敵3的隨機(jī)事件算法,還是比較接近真實(shí)隨機(jī)事件。

由于每次石化發(fā)生都是獨(dú)立計(jì)算概率的事件,只要是真實(shí)隨機(jī)事件,就必然有這樣的表現(xiàn)。

順手提一下,手游中為了加強(qiáng)玩家的體驗(yàn),往往會(huì)設(shè)置類(lèi)似100抽必中ssr之類(lèi)的設(shè)定,這就意味著抽卡并不是真實(shí)隨機(jī)事件,被強(qiáng)行寫(xiě)入算法干預(yù)了。

英雄無(wú)敵3走進(jìn)科學(xué):無(wú)處不在無(wú)所不能的戰(zhàn)場(chǎng)隨機(jī)事件


原理

真實(shí)游戲里的隨機(jī)事件算法,我們只有反編譯才能看清楚,但是我們根據(jù)上面3個(gè)現(xiàn)象,已經(jīng)可以推算出來(lái)大概的情形了。

1、在進(jìn)入戰(zhàn)斗的瞬間,程序隨機(jī)生成了一長(zhǎng)串隨機(jī)數(shù)列。

英雄無(wú)敵3的電腦程序生成了針對(duì)本次戰(zhàn)斗大概100個(gè)數(shù)字的隨機(jī)數(shù)列(這個(gè)100的值不重要,隨口說(shuō)說(shuō),戰(zhàn)斗中如果不夠用就繼續(xù)生成),每個(gè)數(shù)字在1-1000之間(這個(gè)值不重要,猜測(cè),不過(guò)應(yīng)該差不多),對(duì)于每個(gè)動(dòng)作發(fā)生的時(shí)候,都按次序調(diào)用下一個(gè)隨機(jī)值。

例如:進(jìn)入戰(zhàn)斗的時(shí)候,生成了800,700,200,914這樣的隨機(jī)數(shù)序列。

第一步我方部隊(duì)移動(dòng),調(diào)用了800這個(gè)隨機(jī)數(shù),但是移動(dòng)這個(gè)動(dòng)作,不會(huì)造成任何隨機(jī)效果,因此800這個(gè)數(shù)值調(diào)用了,但沒(méi)產(chǎn)生作用。

第二步我方部隊(duì)移動(dòng)后攻擊了敵人,輪到調(diào)用700這個(gè)隨機(jī)數(shù),那么根據(jù)攻防公式,計(jì)算攻擊傷害計(jì)算完上限是100和下限是50后,50+(100-50)乘以700除以1000=85,也就是這次傷害打出了85點(diǎn)傷害,傷害上限是100,傷害下限是50。

第三步敵人反擊,輪到調(diào)用200這個(gè)隨機(jī)數(shù)。據(jù)攻防公式,計(jì)算反擊傷害計(jì)算完上限是40和下限是30后,30+(40-30)*200除以1000=32

第四步我方部隊(duì)部隊(duì)士氣2,行動(dòng)后,有8.3%的機(jī)會(huì)2次移動(dòng)。輪到調(diào)用914這個(gè)隨機(jī)數(shù),那么計(jì)算914是否落到1-1000區(qū)間的8.5%區(qū)間內(nèi),沒(méi)落到。(如果落到應(yīng)該是在915到1000以內(nèi)的數(shù)字才行算落入8.5%的區(qū)間),那么不觸發(fā)2次行動(dòng),結(jié)束。

大概就是這么一個(gè)工作機(jī)制,所以,可以觀察到,如果什么都不改變,反復(fù)進(jìn)入戰(zhàn)斗,戰(zhàn)斗過(guò)程中的隨機(jī)事件觸發(fā),會(huì)一直是重復(fù)。

2、那些因素可以影響到進(jìn)入戰(zhàn)斗生成的隨機(jī)數(shù)列。

戰(zhàn)斗發(fā)生點(diǎn)的地圖坐標(biāo),敵我雙方的部隊(duì)情況(分隊(duì)、混編、站位、生命,數(shù)量、士氣、運(yùn)氣等等),應(yīng)該還有其他條件,但現(xiàn)象太少推測(cè)不出來(lái)了。

3、隨機(jī)數(shù)列并不是永遠(yuǎn)一成不變,每次進(jìn)入戰(zhàn)斗依然存在隨機(jī)浮動(dòng)。

如果不改變?nèi)魏螚l件,反復(fù)進(jìn)入同一次戰(zhàn)斗,隨機(jī)數(shù)列有可能輕微變化,但不會(huì)變化太大,所以你會(huì)觀察到每次部隊(duì)的互相攻擊的傷害變化都不大。。。運(yùn)氣好偶爾比如出現(xiàn)剛才的第四步,之前一直是隨機(jī)數(shù)是914,偶爾有一次重新進(jìn)入戰(zhàn)斗,這個(gè)數(shù)值輕微變化到了915,就剛好觸發(fā)了士氣,一旦觸發(fā)了士氣,就意味著隨機(jī)數(shù)的后面的調(diào)用次序發(fā)生了變化,那么后續(xù)戰(zhàn)斗都將發(fā)生變化,也就是這次戰(zhàn)斗結(jié)果很可能發(fā)生了巨大改變。