[Math] How to find drop rate after killing “x” monsters

English version available after the break. Summary: we are talking about how to find out the number of monster kills necessary to get a number of drops using statistics.

อีกประโยชน์ของวิชา prob stat: คำนวณว่าต้องตีมอนกี่ตัวถึงจะมีโอกาสเก็บ rare drop ได้ครบ โดยใช้ negative binomial distribution (Pascal distribution?)

สิ่งที่เราอยากรู้คือ CDF (cumulative distribution function) ไม่ใช่ PDF (probability density function) เพราะ PDF เป็นการบอกว่าจะได้ของครบที่การตี x ตัว แต่ CDF จะบอกเราว่าเมื่อเราตีไปแล้ว x ตัว โอกาสที่เราจะได้ของครบ (นับตั้งแต่การตีตัวแรก) เป็นเท่าไหร่

ยกตัวอย่างการตีความ จะได้ว่า
– PDF ที่ x = 5000 มี P(X=5000) = 0.001 แสดงว่า ความน่าจะเป็นที่ของดรอปครบตอนตีมอนได้ 5000 ตัวพอดีอยู่ที่ 0.001 หรือ 0.1%
– CDF ที่ x = 5000 มี P(X<=5000) = 0.6 แสดงว่า ความน่าจะเป็นที่ของดรอปครบตอนตีมอนไปแล้ว 5000 ตัวอยู่ที่ 0.6 หรือ 60% (อาจจะครบก่อนหน้านี้ก็ได้)

ฟังก์ชันใน Wolfram Alpha ชื่อ NB(r,p) โดยให้ r = จำนวนของที่จะใช้ และ p = drop rate
สำหรับ MATLAB หรือ octave สามารถใช้ nbinpdf และ nbincdf ในการหาค่าจาก PDF และ CDF ได้

plot

ภาพข้างบนแสดงให้เห็นความแตกต่างระหว่าง PDF ที่เป็นการแสดงโอกาสรายครั้ง กับ CDF ที่เป็นการบวกสะสม PDF อีกที จะเห็นว่า PDF มีรูปคล้าย (แต่ไม่ใช่) รูประฆัง ในขณะที่ CDF เป็นรูปตัวเอส (ทั้งนี้ เนื่องจากจำนวนมอนที่เราตีเป็นจำนวนเต็มเสมอ จริงๆ กราฟทั้งสองต้องแสดงจุด ไม่ใช่เส้น แต่ช่างมันเหอะ ไม่งั้นมองไม่เห็น)

เปิดวาร์ป

When we want to find out how many of the same drop-rate monsters we have to kill to get a number of specific items, we can use the negative binomial distribution.

We want to use its CDF, as opposed to PDF, because CDF talks about the number of kills from the beginning while PDF talks about a specific number of kills.

For example, with a certain distribution function:
– PDF: @ x = 5000, P(X=5000) = 0.001 means if you have EXACTLY 5000 kills, there’s a 0.1% probability of getting the specific number of items at that time.
– CDF: @ x = 5000, P(X<=5000) = 0.6 means AFTER 5000 kills, there’s a 60% probability of completing your item hunt. (You may have already received enough drops earlier than this.)

If you are using Wolfram Alpha, the function is NB(r, p) where r = number of drops you want and p = drop rate.
For MATLAB/Octave you can use nbinpdf and nbincdf.

In the figure above, the PDF shows a figure similar to a bell while the CDF shows an S figure. This is because the CDF adds itself over the number of kills. (Note: Actually, the plot must be dots not lines because the number of kills is discrete.)

Try it

Leave a Reply