推 jwjw0513:太強惹! 快拜! 10/20 01:27
※ 編輯: LDAGGAXC 來自: 59.117.67.187 (10/20 01:33)
───────────────────────────────────────
以下為被別人修改過的最新內容: (10/20 01:32)
───────────────────────────────────────
作者: LDAGGAXC (自由電子氣) 看板: WOW
標題: [心得] 剛寫了一程式去模擬狂戰打木樁王..
時間: Sat Oct 20 01:24:14 2007
只討論普攻 討論亂舞 王護甲是零,打王時間 一萬秒
在同為 主手宇宙之劍, 副手拉托的情況下
命中率 ap 爆擊率 dps
86% 1400 34.45% 416.3
87% 1400 33.45% 417.5
88% 1400 32.45% 405.3
89% 1400 31.45% 407.9
90% 1400 30.45% 405.3
91% 1400 29.45% 400.5
92% 1400 29.45% 398.9
----------狂戰只要超過33%這臨界就是怪物
現在 命中 88% ap1400 爆擊 28.45%
主手宇宙 副手拉拖 -> dps 392.8
主手宇宙 副手亞課最後王的匕-> dps 395.6
兩手都宇宙 -> dps 396.2
---------雙慢好像比較好 lol
付上 source code :
program ddwarrior
implicit none
integer i , imax ,j ,k
c integer hp, hpmax
real tmax, t ,ts
parameter (ts = 0.001)
real crit, hit
integer ap
real hite
logical miss
integer flurry ,atn , crn , misn
common crit, hit , ap , miss ,totd , flurry ,atn,crn ,misn
integer damage, totd
tmax = 10000.0
crit = 29.45
ap = 1400
hite = 9
hit = 76 + 3 + hite
imax = nint(tmax/ts)
totd = 0
atn = 0
crn = 0
misn = 0
j = 0
k = 0
flurry = 0
do i = 1 , imax
t = dfloat(i)*ts
call mh(i,j,t,damage,ts)
call sh(i,k,t,damage,ts)
enddo
write(*,299)
299 format(60('-'))
write(*,300) 'damage per second =', dfloat(totd)/tmax
300 format(4x,a19,f8.2)
write(*,301) 'hit rate = ',(1 - dfloat(misn)/dfloat(atn))*100.0
& , '%'
301 format(4x,a18,f6.2,a2)
write(*,302) 'critical rate =',(dfloat(crn)/dfloat(atn -misn))
& *100,'%'
302 format(4x,a18,f6.2,a2)
stop
end
subroutine mh(i,j,t,damage,ts)
c main hand
real t ,ts
integer damage , j ,totd ,i
logical at , miss ,cr
integer ap ,atn ,crn ,misn
integer ed ,flurry
real mws, crit ,ms ,mss
real ra1 ,ra2
common crit, hit , ap , miss ,totd ,flurry ,atn,crn,misn
c edge of the cosmos : 130 -243
c speed 2.60
ws = 2.6
wss= nint(ws/ts)
if(flurry.ge. 1) then
wss = wss*100/125
c flurry = flurry - 1
c write(*,*) flurry
c write(*,*) wss
endif
if ( mod(j, wss) .eq. 0 ) then
if( flurry.ge.1 ) flurry = flurry - 1
c write(*,*) wss
c write(*,*) wss
c if(flurry.gt. 0 )write(*,*) 'good'
j = 1
at = .true.
atn = atn + 1
ra1 = rand(time()-i)
ra2 = rand(time()+i)
ed = nint(ra2*(113))
ra1 = ra1*100
damage = 130 + ed + nint(ws*(dfloat(ap)/14.0))
if(ra1 .gt. hit ) then
c miss !!
damage = 0
miss = .true.
misn = misn + 1
cr = .false.
elseif(ra1 .le. crit ) then
c critical !!
damage = 2*damage
miss = .false.
crn = crn + 1
flurry = flurry + 1
cr = .true.
else
miss = .false.
cr = .false.
endif
else
at = .false.
cr = .false.
damage = 0
j = j + 1
endif
totd = damage + totd
if(at .and.(.not.cr).and.(.not. miss) ) write(*,100)'main hand
&',t , damage , totd ,flurry
if(at .and. miss) write(*,200) 'main hand' , t ,' miss'
& , totd ,flurry
if(cr) write(*,300) 'main hand' , t ,damage
& , totd ,flurry,'---critical'
100 format(4x,a13,f8.2,i6,i8,i3)
200 format(4x,a13,f8.2,a6,i8,i3)
300 format(4x,a13,f8.2,i6,i8,i3,a12)
return
end
subroutine sh(i,k,t,damage,ts)
c sub-hand
real t,ts
integer damage ,totd ,k ,i
logical at , miss ,cr
integer ap ,atn ,crn,misn
integer ed ,flurry
real ws, crit ,wss ,mws
real ra3 ,ra4
common crit, hit , ap , miss , totd ,flurry ,atn,crn,misn
c Latro's Shifting Sword : 70 -131
c speed 1.40
c Hungering Spineripper : 103 - 155
c speed 1.8
ws = 1.40
wss = nint(ws/ts)
if(flurry.ge. 1) then
wss = wss*100/125
c flurry = flurry - 1
c write(*,*) wss
endif
if ( mod(k, wss) .eq. 0 ) then
c write(*,*) wss
if(flurry .ge. 1 ) flurry = flurry -1
k = 1
c if(flurry .ge.1 ) write(*,*) 'right'
at = .true.
atn = atn + 1
ra3 = rand(time()-i+4)
ra4 = rand(time()+i-4)
ed = nint(ra4*(61))
ra3 = ra3*100
damage = 70 + ed + nint(ws*(dfloat(ap)/14.0))
c
c subhand gets 75% ..
damage = nint(0.75*dfloat(damage))
if(ra3 .gt. hit ) then
c miss !!
damage = 0
cr = .false.
miss = .true.
misn = misn + 1
elseif(ra3 .le. crit ) then
c critical !!
cr = .true.
damage = 2*damage
miss = .false.
crn = crn + 1
flurry = flurry + 3
else
cr = .false.
miss = .false.
endif
else
cr = .false.
at = .false.
damage = 0
k = k + 1
endif
totd = totd + damage
101 format(4x,a13,f8.2,i6,i8,i3)
201 format(4x,a13,f8.2,a6,i8,i3)
301 format(4x,a13,f8.2,i6,i8,i3,a12)
if(at .and.(.not.miss).and. (.not.cr)) write(*,101)
& 'sub hand',t , damage ,totd ,flurry
if(at .and. miss) write(*,201) 'sub hand', t ,' miss' , totd
& ,flurry
if(cr) write(*,301) 'sub hand' , t ,damage
& , totd ,flurry,'---critical'
return
end
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.117.67.187
推 jwjw0513:太強惹! 快拜! 10/20 01:27
推 slow1235:看不懂...ˊˋ...先推 10/20 01:32
※ 編輯: LDAGGAXC 來自: 59.117.67.187 (10/20 01:34)
※ 編輯: LDAGGAXC 來自: 59.117.67.187 (10/20 01:34)
推 laputaca:GOOD... 10/20 01:35
→ laputaca:最近老師在交C++整個難ˊˋ 10/20 01:35
→ newsnew:是模擬程式嗎? XD 10/20 01:39
推 kevin770616:強.. 10/20 01:40
推 REDMlDDLE:.......... 10/20 01:45
推 sifun:可以來個簡單的Excel 表單嗎...... 10/20 01:59
→ jimmy0521:很怪的說法 爆擊超過33% → DPS多10 → 怪物 10/20 01:59
→ jimmy0521:命中89% > 88% = 90% 這個結果也讓我覺得有點問題... 10/20 02:02
推 q0r0p:樓上的 你要看命中跟致命的變化,命中越高致命不夠 10/20 02:11
→ q0r0p:DPS不一定會比較高,反而會下降 10/20 02:12
→ jimmy0521:樓上回錯篇...不過原PO提供的數據&結論 就是撐致命 10/20 02:13
→ jimmy0521:所以我很好奇命中再低 DPS會變高嗎? 10/20 02:15
※ 編輯: LDAGGAXC 來自: 59.117.67.187 (10/20 02:26)
推 usoko:快拜 請問原PO是什麼系的 竟然會fortran...XD 10/20 02:27
推 lovelylion2:我同學(環工)的計概教授:fortran才是工程再用的!!! 10/20 02:38
→ putindoggod:模擬程式3000 10/20 02:42
→ moara:工科碩士以上沒人不會fortran吧 10/20 02:56
推 justeat:1爆本來就比1命中更有價值(ilv) 這樣比沒意思 10/20 09:44
→ duolon:其實去看美服各頂尖輸出的狂戰是怎麼配裝怎麼打的 比用一個 10/20 10:32
→ duolon:考慮條件太少的模擬器來的有意義 今天假如你用的是WOW的私 10/20 10:35
→ duolon:服器(這東西網路老早就有 不過我沒研究)私服身上絕對有辦法 10/20 10:35
→ duolon:調整自己的裝備 用這種實際可測試的東西絕對比較有可信度 10/20 10:36
→ firedman:只是算算這種小東西 c++很簡單吧..要漂亮點 就用c# 10/20 10:57
→ firedman:拉表單設計:P 10/20 10:57
→ firedman:這種東西難是難在要有正確的公式OTZ 10/20 10:59
推 whitefacex:實在很厲害,不過EXCEL拉函數不是省事許多嗎? 0.0 10/20 11:02
推 soniclin:樓上@@ 挑戰自己 也是很好的 10/20 16:55
→ chyan:1. 雙持打boss基礎命中率,現在是約72%,而非76% 10/20 18:44
→ chyan:2. 副手傷害,在天賦點滿後是 62.5% 而不是 75% 10/20 18:44
→ chyan:3. 爆擊後flurry的charge是恢復為3,而非+3,也非+1 10/20 18:46
→ chyan:4. 未擊中也會消耗 flurry 的 charge,你程式沒有 10/20 18:47
→ chyan:以上是看到的一些問題 10/20 18:49