Announcement

Collapse
No announcement yet.

How to calculate the tradeskill difficulty

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    If I use my integral analysis up to gaining 45 skill (136 attempts), I come to a Y-value for Blacksmithing of about 4.19. Using the full batch of 160 yields a Y-value of 3.91. This seems to be consistent with the reported value of Y = 4 for Blacksmithing.

    Using the formula posted by Suani, I get a Y-value of 1.70, unless I made a computation error somewhere .

    Kaysha Soulsinger
    Member of the 1750 club since October 13th 2004
    True strength is not a measure of the body, it's a measure of the soul

    Comment


    • #17
      Originally posted by Nitpaac
      ???. Why isn't it enough to cap %1st to one as stated above?
      And why would we need the number of successes and failures for each skillup?
      How could we use that information? And why the trivial?
      Sorry, I was not clear. You don't need to report the successes and failures. Rather, we need to calculate the expected successes and failures for each skillup in order to come up with an expected number of attempts. On the reporting side, you need to provide the skill subrange and the number of attempts for each different combination of trivial, S and mod% that you used.

      You gave the formula for the number of attempts for a single skillup as
      #attempts = 1 / (%1st * %2nd)
      where %1st is now
      %1st = W*min(1,S/(100*Y)) + (1-W)*min(1,S/(200*Y))
      %2nd is still
      %2nd = 1- (min(190, skill) / 200)
      and the success percentage W is
      W = MAX(MIN((skill*(1+mod%))-trivial*0.75+51.5,95),5)/100

      Notice that, in the general case, W (and %1st) changes whenever skill, trivial or mod% changes; %1st also changes when S changes; and %2nd changes when skill changes. So in the end, we need to calculate the number of attempts for each skillup separately.

      We use the information to find the closest match among the expected number of attempts for different Ys with the actual number of attempts.



      Originally posted by Nitpaac
      Maybe you can explain how you've got that?
      #attempts = Y * #skillups * 1600000 / [ 21 * S * (401-skillups) ]

      This is a simplified form of the general formula when certain conditions apply.

      If S<=200, then %1st simplifies like this
      %1st = W*min(1,S/(100*Y)) + (1-W)*min(1,S/(200*Y))
      %1st = W*S/(100*Y) + (1-W)*S/(200*Y)
      %1st = W*S/(100*Y) + S/(200*Y) - W*S/(200*Y)
      %1st = 2*W*S/(200*Y) + S/(200*Y) - W*S/(200*Y)
      %1st = S/(200*Y) * (2*W + 1 - W)
      %1st = S/(200*Y) * ((2*W -W) + 1)
      %1st = (1+W)*S/(200*Y)

      If the trivial is far enough above the current skill so that we hit the minimum success rate of 5% (which can also be expressed as 1/20) then
      %1st = (1+W)*S/(200*Y)
      %1st = (1+1/20)*S/(200*Y)
      %1st = (20/20+1/20)*S/(200*Y)
      %1st = (21/20)*S/(200*Y)
      %1st = 21*S/(20*200*Y)
      %1st = 21*S/(4000*Y)
      Notice that %1st is constant if S and Y do not change.

      If we don't go over skill 190 then
      %2nd = 1- (min(190, skill) / 200)
      %2nd = 1- skill/200
      %2nd = (200- skill)/200

      Let's modify the notation a little because we're now going to discuss skill ranges. We're going to use indexes. For example, let's call %2nd{i} the %2nd at skill{i} within a range.
      %2nd{i} = (200 - skill{i})/200

      The average skillup percentage P for a range is
      P = sum(%1st{i} * %2nd{i})/ #skillups
      Because %1st is a constant, we can take it out of the sum() part
      P = %1st{i} * sum(%2nd{i})/ #skillups
      P = 21*S/(4000*Y) * sum((200 - skill{i})/200)/ #skillups
      P = 21*S * sum((200 - skill{i})/200) / (#skillups * 4000*Y)
      We take the 200 divisor out of the sum() part
      P = 21*S * sum(200 - skill{i}) / (#skillups * 4000*Y * 200)
      We split the sum into two parts, one of which is a constant
      sum(200 - skill{i}) = 200 * #skillups - sum(skill{i})
      so that
      P = 21*S * (200 * #skillups - sum(skill{i})) / (#skillups * 4000*Y * 200)



      If we start skilling up at skill=0 then skill{i} ranges from 0 to (#skillups-1) and
      sum(skill{i}) = #skillups*(#skillups-1)/2

      [I]
      As an aside, Pascal rediscovered this formula for himself when he was a child. It is easily demonstrated when the number is even. For example, if the number of skillups is 10, then
      sum(skill[i]= 0+1+2+3+4+5+6+7+8+9
      Rearranging gives
      sum(skill[i])= 0+9 + 1+8 + 2+7 + 3+6 + 4+5
      sum(skill[i])= 9 + 9 + 9 + 9 + 9
      sum(skill[i])= 9 * (1 + 1 + 1 + 1 + 1)
      sum(skill[i])= 9 * 5
      sum(skill)= 45


      Back to work. P is now
      P = 21*S * (200 * #skillups - #skillups*(#skillups-1)/2) / (#skillups * 4000*Y * 200)
      We can simpify by cancelling out #skillups
      P = 21*S * (200 - (#skillups-1)/2) / (4000*Y * 200)

      200 - (#skillups-1)/2 = (200 - #skillups/2 + 1/2) * 2/2
      200 - (#skillups-1)/2 = (400 - #skillups + 1) / 2
      200 - (#skillups-1)/2 = (401 - #skillups) / 2

      Replacing in P gives
      P = 21*S * ((401 - #skillups) / 2) / (4000*Y * 200)
      P = 21*S * (401 - #skillups) / (4000*Y * 200 * 2)
      P = 21*S * (401 - #skillups) / (1600000 * Y)

      since the average number of attempts is 1/P, the total number of attempts is
      sum(#attempts[i]) = #skillups / P
      sum(#attempts[i]) = #skillups / (21*S * (401 - #skillups) / (1600000 * Y))
      sum(#attempts[i]) = #skillups * 1600000 * Y / (21*S * (401 - #skillups))

      And we're done at last! You owe me a beer!

      Comment


      • #18
        Originally posted by Kaysha Soulsinger
        If I use my integral analysis up to gaining 45 skill (136 attempts), I come to a Y-value for Blacksmithing of about 4.19. Using the full batch of 160 yields a Y-value of 3.91. This seems to be consistent with the reported value of Y = 4 for Blacksmithing.

        Using the formula posted by Suani, I get a Y-value of 1.70, unless I made a computation error somewhere .
        Doh! Given those results I think it likely that my formula is wrong. I'm trying to find the mistake I made.

        I'm glad that the overal strategy seems useful with your formula.

        Comment


        • #19
          I think your error is in this one:

          sum(200 - skill{i}) = 200 * #skillups - sum(skill{i})

          You can quickly see this if you just fill in a low value for i, and sum from 0 to i. If you take i as 3 for instance (meaning you got 2 skillups), the left hand side becomes 200 + 199 + 198 = 597. The right hand side becomes 200 * 2 - 3 = 397. This equation is where your error is.

          Edit: The equation should probably read
          sum(200 - skill{i}) = 200 * (#skillups + 1) - sum(skill{i})
          But I have not made an indepth analysis of that one .

          Edit 2: After having gone through your method, I've seen it is in essence an integral equation; you've just gone about it in a different way. I am fairly confident that with the above correction, you will find (almost) the same results as I found.
          Last edited by Kaysha Soulsinger; 04-29-2004, 02:50 AM.

          Kaysha Soulsinger
          Member of the 1750 club since October 13th 2004
          True strength is not a measure of the body, it's a measure of the soul

          Comment


          • #20
            Numbers, equitations, sums and integrals are rotating in my mind.
            Will have a look at this later when it's not 1:30 am local time.

            A beer?
            Hmm, should that go to you, Suani (extensive explanation of your formula, thanks!)
            Or to Kaysha (doing integrals and correcting you)?
            Will do a virtual round once we got one or two "how to determine Y" formulas nailed down!

            Laters,
            Nitpaac

            P.S: Suani, any possibility to reach you? PM? Email? ;tell (which server?)
            Last edited by Nitpaac; 04-28-2004, 06:47 PM. Reason: Spelling, of course

            Comment


            • #21
              I think where your treatise goes off is on the definition of #skillups. You need to be very careful whether you mean the #skillups up to the previous skill, or the #skillups up to and including the next skillup.

              Intuitively, I assumed to former, so skilling up to 45 for instance meant #skillups was 45 to determine your chance at getting to 46. But from the way I see it now, you determine the chance to reach 46 by saying you need 46 skillups for that.

              Going to work through your treatise to see how this changes my findings.
              Last edited by Kaysha Soulsinger; 04-29-2004, 03:29 AM. Reason: Made post somewhat more clear

              Kaysha Soulsinger
              Member of the 1750 club since October 13th 2004
              True strength is not a measure of the body, it's a measure of the soul

              Comment


              • #22
                Ok, I've finally decided to plot the expected number of attempts needed per skill up, for all three Y values (2, 3 and 4), for the skill range from 0 to 45. I've used an S of 129 (as my Rogue has 129 STR).

                #att/skillup = Y * 800,000 / (21 * S * (200 - skill))

                Based on that, I found a few things:

                - Assuming Y = 2, the predicted number of attempts to skillup to 45 skill is 153. This is beyond the 136 I found ingame, but if we take the difference as statistical noise, it's acceptable.
                - The difference in the assumption regarding #skillups that I mentioned above has minimal influence on the end result. In fact, if I take the ratio of the predicted value of 153 and the one I found at 136 and multiply this by the Y value of 2, I get 1.77, which is what your formula would give me.

                This leads me to believe the following: Blacksmithing has Y = 2.

                I admit that my calculus is rusty. I'll need to re-examine my own suggestion and see why it mismatches.

                Edit2: I think I have found where it is off in my integral. As you may know, there are 2 commonly used logarithms; the 10-log and the e-log (also known as the natural logarithm). I used the 10-log in my calculations, but if I use the e-log instead, my computed Y-value drop from 4.19 to 1.80, which is very close to what your formula gives as well. I will need to see if the solution to the integral of 1/X indeed uses the e-log, I don't have my Calculus books at hand here.
                Last edited by Kaysha Soulsinger; 04-29-2004, 06:05 AM.

                Kaysha Soulsinger
                Member of the 1750 club since October 13th 2004
                True strength is not a measure of the body, it's a measure of the soul

                Comment


                • #23
                  Originally posted by Kaysha Soulsinger
                  I will need to see if the solution to the integral of 1/X indeed uses the e-log, I don't have my Calculus books at hand here.
                  The solution of the integral of 1/X is the natural log (e-log).
                  /
                  | (1/x) dx = ln (x)
                  /
                  Willain of Xev

                  Comment


                  • #24
                    Thanks. I also just found the portion in my Calculus book where they consider logarithms - and they indeed denote the natural logarithm simply by log x.

                    So I guess we can say - albeit from a relatively small sample - that Blacksmithing has Y = 2. And, it proves that both methods of deducting the generic formula for Y amount to the same thing, provided certain conditions are met.

                    Recapping what I found in a more suitable form for an accurate way to determine the value of Y for various Tradeskills, we use the following restrictions:

                    1) ST <= 200 for Y = 2 - where ST is the relevant STatistic (WIS, INT or other, where we keep in mind to substract 15 points for a Tradeskill that only uses WIS and INT) - on a success. If the skill is higher than 200, the chance to pass the first test becomes 1 and remains capped. If Y = 3 there is the implication that ST <= 300, on a success, for the same purpose. If these conditions are not met, the determination of Y becomes impossible. There is no bound to ST for skilling up on a failure.

                    2) Successrate is at the bottom of 5%, denoted by W. This enables us to put W equal to 1/20. If we have a higher successrate, based on our skill, the value of W changes accordingly.

                    3) Skill is below 190, so that the second skillup chance fluctuates according to skill, instead of being static at 1/20.

                    The formula I found then looks as follows (slightly rewritten the logarithmic component), where SK1 denotes the "starting" skill level and SK2 the "target" skill level, with the note that SK1 <= SK2 and SK2 <= 190:

                    Y = [#att * 21 * ST ] / [ 800,000 * ln { ( 200 - SK1) / (200-SK2) } ]

                    Kaysha Soulsinger
                    Member of the 1750 club since October 13th 2004
                    True strength is not a measure of the body, it's a measure of the soul

                    Comment


                    • #25
                      Originally posted by Kaysha Soulsinger
                      I think your error is in this one:

                      sum(200 - skill{i}) = 200 * #skillups - sum(skill{i})

                      You can quickly see this if you just fill in a low value for i, and sum from 0 to i. If you take i as 3 for instance (meaning you got 2 skillups), the left hand side becomes 200 + 199 + 198 = 597. The right hand side becomes 200 * 2 - 3 = 397. This equation is where your error is.
                      I don't see the problem with my code there. I think you're confusing i and skill{i}. The index i cannot be 0. It ranges from 1 to #skillups; skill{i} ranges from 0 to (#skillups-1); #skillups= ending skill - starting skill. Since the starting skill is 0 in our case, #skillups= ending skill. We don't attempt a skillup on the ending skill.

                      In your example, if the maximum i is 3 that means there are 3 skillups, skill{1}=0, skill{2}=1, skill{3}=2, starting skill=0, ending skill=3 and #skillups=3. I see three terms on both sides of the equation. If you ment that there should be 2 skillups, then the ending skill is 2 and there should be two terms on both sides of the equation.

                      The results of the simplified equation I showed match closely the results of the general equation in my Excel solver.

                      I now think that the problem is the relationship between P{i}, the chance of success at one skill level and the number of attempts given that probability.

                      P{i} gives the chance of success for the next attempt. So the chance of a skillup on the first attempt is P{i}; on the second attempt is P{i}*(1-P{i}); on the third, it's P{i}*(1-P{i})*(1-P{i}); on the jth attempt, it's P{i} * (1-P{i})^(j-1).

                      The average number of attempts eventually converges to 1/P{i}, but the distribution has a large positive skew. So the average number of attempts is possibly not the right statistic to use for the expected number of attempts.

                      I'm still working on it. I might do a brute force lookup table of #attempts for each P{i}. You have better mathematical tools than I have so I hope you find a more elegant solution.
                      Last edited by Suani; 04-29-2004, 02:54 PM. Reason: Clarified the difference between i and skill{i}

                      Comment


                      • #26
                        Originally posted by Nitpaac
                        P.S: Suani, any possibility to reach you? PM? Email? ;tell (which server?)
                        I edited my profile to allow receiving messages.

                        Comment


                        • #27
                          Umm don't mean to rain on all the enthusiasm but has anyone just asked a dev what the levels are?
                          Greym Greymantle, Windcaller of Tunare
                          GM Fletcher + Smith The Rathe "Rangers don't get lost they explore"

                          Comment


                          • #28
                            Yes, and they say they like seeing us puzzle over them

                            Kaysha Soulsinger
                            Member of the 1750 club since October 13th 2004
                            True strength is not a measure of the body, it's a measure of the soul

                            Comment


                            • #29
                              I hope they get as much of a headache as I did after reading through this thread. I hate math

                              Comment


                              • #30
                                Theres no real reason to try to calculate the difficulty of a trade until your skill is above 190. The formula for skillups can be used above 190 because it stays the same you just need the data from skilling up. and compare it to the skillup % for difficulty 2, 3, 4.

                                You have 2 formulas, one for failure skillups, another for success skillups
                                For fletching with Dex = 305
                                N=(S*10)/(Y*F)

                                Check 1 difficulty 3
                                success check 1 => (305*10)/(3*1) = 1016. Check 1 is 100%
                                failure check 1 => (305*10)/(3*2) = 508. Check 1 is 50.8%

                                Check 1 difficulty 4
                                success check 1 => (305*10)/(4*1) = 762.5. Check 1 is 76.25%
                                failure check 1 => (305*10)/(4*2) = 381. Check 1 is 38.12%

                                Check 2 for skill above 190 is always 5%
                                1 - (190/200) = .05 or 5%

                                Sooo.
                                Difficulty 3
                                1.00*.05 = .05 or 5% skillups on successes.
                                .508*.05 = .0254 or 2.54% skillups on failures.

                                Difficulty 4
                                .7625*.05 = .038 or 3.8% skillups on successes.
                                .3812*.05 = .019 or 1.9% skillups on failures.
                                ---------------------------------------------------

                                Now lets look at my data for fletching.
                                Dex was 305 the entire time.

                                If the Difficulty factor was 3, I would skillup at
                                5% on successes.
                                2.54% on failures

                                If the Difficulty factor was 4, I would skillup at
                                3.8% on successes
                                1.9% on failures

                                no real reason to do calculations under skill 190, since the formula stays the same from 190 - 250

                                Heres my data
                                (note no data for skillup 211, 212, 236)

                                SK = Skillup
                                F = failures in this skillup
                                C = total attempted combines for this skillup
                                S = Successes in this skillup

                                * means achieved the skillup on a failed combine
                                (_ used underscores for formating)


                                _SK F _C _S
                                203 1 15 14
                                204 0 19 19
                                205 5 67 62
                                206 2 31 29 *
                                207 0 15 15
                                208 5 94 89
                                209 0 4 4
                                210 7 85 78


                                213 2 23 21
                                214 2 33 31
                                215 1 8 7
                                216 5 35 30
                                217 0 8 8
                                218 0 6 6
                                219 2 35 33
                                220 2 36 34
                                221 8 106 98
                                222 0 2 2
                                223 1 25 24
                                224 0 29 29
                                225 1 15 14
                                226 0 3 3
                                227 5 47 42
                                228 2 21 19
                                229 0 12 12
                                230 0 9 9
                                231 2 14 12
                                232 3 52 49
                                233 0 4 4
                                234 0 2 2
                                235 1 22 21

                                237 53 86 33
                                238 21 28 7 *
                                239 _4 10 6 *
                                240 31 49 18
                                241 36 73 37
                                242 67 106 39 *
                                243 _0 1 1
                                244 13 21 8
                                245 _1 3 2 *
                                246 32 55 23 *
                                247 26 42 16
                                248 _2 11 9
                                249 _3 9 6
                                250 _5 6 1 *
                                ----------------

                                So
                                Total tried combines 1377
                                Successes 1026
                                Failures 351
                                Skillup on success = 38
                                Skillup on failure = 7

                                Success Skillup% 38/1026=.0370 or 3.7%
                                Failure Skillup% 7/351=.0199 or 1.99%

                                these percentage rates look just like a difficulty factor 4

                                Comment

                                Working...
                                X