Rules:Skill Check Table: Difference between revisions

From Adonthell
Jump to navigation Jump to search
New page: {| border=1 cellspacing=0 cellpadding=5 width=500px align=center |- style="background:silver; text-align:center" | '''Score \ Rank''' | '''1''' | '''2''' | '''3''' | '''4''' | '''5''' |- s...
 
Added some explaining text and algorithm
Line 1: Line 1:
== Variable Skill Check Table ==
The following table lists the likelyhood to beat a certain score in [[Rules:Stats#Skills|variable skill checks]] at a given rank. It shall aid designers to balance those checks according to the stage of the game and difficulty of the situation. As a rule of thumb, one can assume higher ranks at later points in the game, but it should be noted that not all skills will necessarily be raised to 5th rank.
{| border=1 cellspacing=0 cellpadding=5 width=500px align=center
{| border=1 cellspacing=0 cellpadding=5 width=500px align=center
|- style="background:silver; text-align:center"
|- style="background:silver; text-align:center"
Line 218: Line 222:
| style="background:#c8482d" | 0.01%
| style="background:#c8482d" | 0.01%
|}
|}
<br>
== Calculating Probabilities ==
The following snippet of Python code has been used in calculating the probabilities above.
  # -- k: sides of die
  k = 6
 
  def sum_dice (dice, sum, score):
      count = 0
      if dice == 0:
          if sum >= score: count = 1
      else:
          for x in range (1, k + 1):     
              count = count + sum_dice (dice-1, x+sum, score)
      return count
 
  # -- x: number of dice (1-5)
  for x in range (1, 6):
      # -- n: scores possible with x dice
      for s in range (x*1, x*k+1):
          count = sum_dice (x, 0, s)
          p = (count*100.0)/(k**x)
          print "%id%i: p(%i) = %.2f%%" % (x, k, s, p)
<!-- The following code was used to produce the nicely colored table:
for n in range (1, 5*k+1):
    print "|- style=\"text-align:right\"\n| %i" % n
    # -- x: number of dice (1-5)
    for x in range (1, 6):
        count = sum_dice (x, 0, n)
        p = (count*100.0)/(k**x)
        col = int(p*2.55)
        g = 200
        r = 200
        if col > 128: r = r - col + 128
        else: g = 72 + col
        print "| style=\"background:#%02x%02x2d\" | %.2f%%" % (r, g, p)
//-->
[[Category:Rules]]

Revision as of 21:19, 23 August 2009

Variable Skill Check Table

The following table lists the likelyhood to beat a certain score in variable skill checks at a given rank. It shall aid designers to balance those checks according to the stage of the game and difficulty of the situation. As a rule of thumb, one can assume higher ranks at later points in the game, but it should be noted that not all skills will necessarily be raised to 5th rank.

Score \ Rank 1 2 3 4 5
1 100.00% 100.00% 100.00% 100.00% 100.00%
2 83.33% 100.00% 100.00% 100.00% 100.00%
3 66.67% 97.22% 100.00% 100.00% 100.00%
4 50.00% 91.67% 99.54% 100.00% 100.00%
5 33.33% 83.33% 98.15% 99.92% 100.00%
6 16.67% 72.22% 95.37% 99.61% 99.99%
7 0.00% 58.33% 90.74% 98.84% 99.92%
8 0.00% 41.67% 83.80% 97.30% 99.73%
9 0.00% 27.78% 74.07% 94.60% 99.28%
10 0.00% 16.67% 62.50% 90.28% 98.38%
11 0.00% 8.33% 50.00% 84.10% 96.76%
12 0.00% 2.78% 37.50% 76.08% 94.12%
13 0.00% 0.00% 25.93% 66.44% 90.20%
14 0.00% 0.00% 16.20% 55.63% 84.80%
15 0.00% 0.00% 9.26% 44.37% 77.85%
16 0.00% 0.00% 4.63% 33.56% 69.48%
17 0.00% 0.00% 1.85% 23.92% 60.03%
18 0.00% 0.00% 0.46% 15.90% 50.00%
19 0.00% 0.00% 0.00% 9.72% 39.97%
20 0.00% 0.00% 0.00% 5.40% 30.52%
21 0.00% 0.00% 0.00% 2.70% 22.15%
22 0.00% 0.00% 0.00% 1.16% 15.20%
23 0.00% 0.00% 0.00% 0.39% 9.80%
24 0.00% 0.00% 0.00% 0.08% 5.88%
25 0.00% 0.00% 0.00% 0.00% 3.24%
26 0.00% 0.00% 0.00% 0.00% 1.62%
27 0.00% 0.00% 0.00% 0.00% 0.72%
28 0.00% 0.00% 0.00% 0.00% 0.27%
29 0.00% 0.00% 0.00% 0.00% 0.08%
30 0.00% 0.00% 0.00% 0.00% 0.01%


Calculating Probabilities

The following snippet of Python code has been used in calculating the probabilities above.

 # -- k: sides of die
 k = 6
 
 def sum_dice (dice, sum, score):
     count = 0
     if dice == 0:
         if sum >= score: count = 1
     else:
         for x in range (1, k + 1):      
             count = count + sum_dice (dice-1, x+sum, score)
     return count
 
 # -- x: number of dice (1-5)
 for x in range (1, 6):
     # -- n: scores possible with x dice
     for s in range (x*1, x*k+1):
         count = sum_dice (x, 0, s)
         p = (count*100.0)/(k**x)
         print "%id%i: p(%i) = %.2f%%" % (x, k, s, p)