Please forgive me if this has already been covered in another thread and I missed it. Honestly, I only visit these forum from time to time, and have only read the main thread on the UA changes.
The group in which I play has several players who love psionics and are currently playing the UA classes. So, when the update hit, we (players in my group) spent some time talking about it. One of the conversations we had was around the number of expected uses one would have with the "Psi Die".
I hope someone (some people) check my work. It's been 30 years since I've needed to calculate first passage times of a Markov chain, but the Psi Die seems like it's perfectly modeled by one, and the first passage time (first hitting time) also seems like the correct way to calculate the number of times you could be expected to roll a Psi Die before you lose all uses (rolling a 4 on the d4).
Based on my math, if your die is a d8, you are expected to be able to roll 40 dice (not all of those will be d8s) before your power is exhausted. Since my matrix math is so rusty and, because I'm a software developer, I wrote a program to simulate this 250,000 times... the mean of those runs was 40.02. That's close enough to tell me the math is probably OK, but that I should up the simulation count (or... it means that I made the same mistakes in both places). A little more on information... if your die is a d8 and your starting state is a d8, you're expected to have 40 rolls, if your starting state is a d6, you're expected to have 32 rolls, and if your starting state is a d4, you're expected to have 18 rolls. Or, put another way, if you're 5th level (max die is a d8), and starting your gaming session with a d4 as your Psi Die, you're expected to be able to roll 18 times before it exhausted. Could be once... could be a lot more... but, the expected number of rolls is 18.
To me, that feels like a LOT of uses (and there's even a daily refresh). Please note... that math does not take into account things like abilities which force a die size change.
I understand the people who'll say, "but, that d8 could go away in just three rolls". And, yes, it could... or, as many others have said, it could last a very, very, very long time. In much the same way, an 8d6 Fireball, could do 86 points of damage (about the same amount rolling all 1s with a 1st level Magic Missile) [OK, Fireball's also AoE...]. However, it's expected to do 28 points and people love the spell.
Feels like this is a "use it and see if you like it situation". To me, it's kind of neat seeing a new mechanic introduced.
Finally, I didn't do the math for the remaining die sizes, but I did run simulations for them (which may be wrong). Those simulations indicate the following when starting with the max die size (max die size: expected number of uses)
d6 : 16
d8 : 40
d10 : 80
d12 : 140
Not sure this helps, but it does give some number with which to have conversations. PLEASE, if someone else runs the numbers, please let me know if I've made some mistakes -- "fact based conversations" using bad facts are not helpful.
UPDATE: For a post using math, I made a mistake on the min damage of a Fireball... oops.
Psi die is essentially unlimited because it's always as likely to grow as to shrink. It's not actually literally unlimited because random walks will eventually walk down to zero, but even if you get unlucky and it goes to zero, you can still replenish it back to full once per long rest. A quick Monte Carlo sim over 1000 trials tells me that you can on average expect the following number of psi dice at each level before running out:
Level 3 (d6): 31.1 rolls before running out, average bonus +3.488641 Level 5 (d8): 76.4 rolls before running out, average bonus +4.146024 Level 11 (d10): 158.1 rolls before running out, average bonus +4.813687 Level 17 (d12): 288.5 rolls before running out, average bonus +5.520680
It's interesting that the numbers in that thread are quite a bit larger than my calculations. I wonder if that's due to the number of sims they ran (1,000)... if it points to a mistake on my part... or something else?
It's interesting that the numbers in that thread are quite a bit larger than my calculations. I wonder if that's due to the number of sims they ran (1,000)... if it points to a mistake on my part... or something else?
I usually ask my husband for math related stuff, so I don't know. Did you account for the die growing in size if you roll a 1?
Rollback Post to RevisionRollBack
Canto alla vita alla sua bellezza ad ogni sua ferita ogni sua carezza!
I sing to life and to its tragic beauty To pain and to strife, but all that dances through me The rise and the fall, I've lived through it all!
If you add that, make sure to account for the fact that the Psi-die can't go above it's max size, so rolling a 1 when you are already at your max size doesn't do anything.
Rollback Post to RevisionRollBack
Canto alla vita alla sua bellezza ad ogni sua ferita ogni sua carezza!
I sing to life and to its tragic beauty To pain and to strife, but all that dances through me The rise and the fall, I've lived through it all!
If you know Python, here's the code I used for my simulations. I used a jupyter notebook which is why you'll see the print() statements followed by a sys.stdout.flush(). Please don't to be too harsh, it's quick and dirty code. I'm sharing so people can validate/disprove my numbers.
import matplotlib.pyplot as plt import random import sys
%matplotlib inline
DICE = [0, 4, 6, 8, 10, 12] #-- 0 = Exhausted NUM_TESTS = 250000 #-- Number of iterations to run per die
time_with_die = [] #-- Number of rolls by die size for each max die being simulated ttl_rolls = [] #-- Total number of rolls by max die being simulated
#-- Iterate over the dice #-- d4=1, d6=2, d8=3, d10=4, and d12=5 for max_die_pos in range(1, len(DICE)): time_with_die.append([0 for i in DICE]) ttl_rolls.append(0)
#-- Run tests for the current die for i in range(NUM_TESTS):
#-- These print() lines let me know the program's running and where it is print('\rDie Size: d{} - Test: {:,} '.format(DICE[max_die_pos], i+1), end='') sys.stdout.flush()
die_pos = max_die_pos #-- the "pos" variables track the POSition in the DICE list rolls = 0 while die_pos > 0: die_faces = DICE[die_pos] die_val = random.randint(1, die_faces) rolls += 1 time_with_die[-1][die_pos] += 1
#-- Increase (to max) the die on a one, decrease die if the max number is rolled if die_val == 1: die_pos = min(die_pos + 1, max_die_pos) elif die_val == die_faces: die_pos -= 1
ttl_rolls[-1] += rolls
print('\rDone ') sys.stdout.flush()
#-- Display the expected number of rolls per die size out_str = 'Die: d{:<2} / Total Rolls: {:11,} / Tests: {:8,} / Mean Rolls per Test: {:8.2f}' for i in range(2, len(DICE)): print(out_str.format(DICE[i], ttl_rolls[i-1], NUM_TESTS, ttl_rolls[i-1] / NUM_TESTS))
#-- For each die size, create a bar chart showing the percentage of time each die size was rolled for s in range(2, len(DICE)): plt.bar(['d{}'.format(i) for i in DICE[1:]], [i / ttl_rolls[s-1] for i in time_with_die[s-1][1:]])
plt.ylim(0, 0.8) plt.xlabel('Die') plt.ylabel('Percent of Rolls') plt.title('Time Spent with Different Psi Die Sizes - d{}'.format(DICE[s])) plt.grid(True)
The first passage times are calculated (I think... man, I need a math person to validate this) with "(I - Q)^-1 * 1". Where I is the identity matrix, Q is the 3x3 matrix in the upper left of the transition probability matrix, and 1 is the all ones vector.
The part before the all ones vector can be calculated by putting the following in Wolfram Alpha (like I'm going to invert that matrix by hand ;-) ):
Multiplying that matrix by the all ones vector just sums each "row" of the matrix (where the top row is state "d8", middle row is "d6", and bottom row is "d4"):
40
32
18
This is how I calculated the expected number of rolls, if your max die size is a d8 and you start with a d8 (40 rolls), you start with a d6 (32 rolls), or you start with a d4 (18 rolls)
It's interesting that the numbers in that thread are quite a bit larger than my calculations. I wonder if that's due to the number of sims they ran (1,000)... if it points to a mistake on my part... or something else?
Those numbers are (very) roughly twice those that you put down so my initial assumption is that they're including the Psi Replenishment feature which gives you a once per long rest bonus action to reset the psi die back to it's original size.
Colors: Yellow and Orange (state transition probabilities), Grey (standard matrices, kind of a constant), Green (the results of a calculation)
B:G contain the Transition Probability Matrix information. The cells in yellow are the ones which become "Q" in the calculations (tried to make it obvious from where those numbers were coming)
I:M is the Identify Matrix (hereinafter "I")
O:S is the "Q" pulled from the Transition Probability Matrix
U:Y: is "I" - "Q"
AA:AE is the inverse of "I" - "Q"
AG is the Ones Vector
AI is the final results. These numbers tell you, for a given die size (the four groups are for d6, d8, d10, and d12), if I start at a give state (column A), how many expected rolls do I have before I exhaust my Psi Die (e.g., if my max die is a d10 -- rows 16-20 -- and I start the night with a d8, I am expected to be able to roll 70 times before I exhaust my Psi Die...)
A few comments in general:
I still have had no one verify or disprove the calculations (in other words, I have no idea if they are right)
The numbers *do* match those returned by my simulations (that may mean I've probably done this correctly... or, it may mean I just made the same mistakes in multiple places)
Like my prior disclaimers, these calculations do not take into account abilities which force a die size change. They only consider the die size changing based on rolling the max or min values.
So, with this, I think I'm done with these calculations (well, until someone finds a mistake that I've made). Thank you to anyone who actually read through my walls of text.
The Psi Die is just one more thing that the DM has to keep track of since many player's can't be trusted not to fiddle with it. I won't be using any of the archetypes, feats, or materials that make use of it in my campaigns. I also won't allow to use said material in my campaigns.
Rollback Post to RevisionRollBack
Watch your back, conserve your ammo, and NEVER cut a deal with a dragon!
To post a comment, please login or register a new account.
Please forgive me if this has already been covered in another thread and I missed it. Honestly, I only visit these forum from time to time, and have only read the main thread on the UA changes.
The group in which I play has several players who love psionics and are currently playing the UA classes. So, when the update hit, we (players in my group) spent some time talking about it. One of the conversations we had was around the number of expected uses one would have with the "Psi Die".
I hope someone (some people) check my work. It's been 30 years since I've needed to calculate first passage times of a Markov chain, but the Psi Die seems like it's perfectly modeled by one, and the first passage time (first hitting time) also seems like the correct way to calculate the number of times you could be expected to roll a Psi Die before you lose all uses (rolling a 4 on the d4).
Based on my math, if your die is a d8, you are expected to be able to roll 40 dice (not all of those will be d8s) before your power is exhausted. Since my matrix math is so rusty and, because I'm a software developer, I wrote a program to simulate this 250,000 times... the mean of those runs was 40.02. That's close enough to tell me the math is probably OK, but that I should up the simulation count (or... it means that I made the same mistakes in both places). A little more on information... if your die is a d8 and your starting state is a d8, you're expected to have 40 rolls, if your starting state is a d6, you're expected to have 32 rolls, and if your starting state is a d4, you're expected to have 18 rolls. Or, put another way, if you're 5th level (max die is a d8), and starting your gaming session with a d4 as your Psi Die, you're expected to be able to roll 18 times before it exhausted. Could be once... could be a lot more... but, the expected number of rolls is 18.
To me, that feels like a LOT of uses (and there's even a daily refresh). Please note... that math does not take into account things like abilities which force a die size change.
I understand the people who'll say, "but, that d8 could go away in just three rolls". And, yes, it could... or, as many others have said, it could last a very, very, very long time. In much the same way, an 8d6 Fireball, could do 8
6points of damage (about the same amount rolling all 1s with a 1st level Magic Missile) [OK, Fireball's also AoE...]. However, it's expected to do 28 points and people love the spell.Feels like this is a "use it and see if you like it situation". To me, it's kind of neat seeing a new mechanic introduced.
Finally, I didn't do the math for the remaining die sizes, but I did run simulations for them (which may be wrong). Those simulations indicate the following when starting with the max die size (max die size: expected number of uses)
Not sure this helps, but it does give some number with which to have conversations. PLEASE, if someone else runs the numbers, please let me know if I've made some mistakes -- "fact based conversations" using bad facts are not helpful.
UPDATE: For a post using math, I made a mistake on the min damage of a Fireball... oops.
UPDATE 2,3: Corrected some grammar
Thank you!
Creating Epic Boons on DDB
DDB Buyers' Guide
Hardcovers, DDB & You
Content Troubleshooting
I found someone else's work on this. I'm no statistician, so I don't know if it's useful: https://forums.giantitp.com/showsinglepost.php?p=24451344&postcount=2
Canto alla vita
alla sua bellezza
ad ogni sua ferita
ogni sua carezza!
I sing to life and to its tragic beauty
To pain and to strife, but all that dances through me
The rise and the fall, I've lived through it all!
It's interesting that the numbers in that thread are quite a bit larger than my calculations. I wonder if that's due to the number of sims they ran (1,000)... if it points to a mistake on my part... or something else?
I usually ask my husband for math related stuff, so I don't know. Did you account for the die growing in size if you roll a 1?
Canto alla vita
alla sua bellezza
ad ogni sua ferita
ogni sua carezza!
I sing to life and to its tragic beauty
To pain and to strife, but all that dances through me
The rise and the fall, I've lived through it all!
Yepper... that's what causes the number to grow so much (even in my numbers) as the max die increases. Thank you for linking that thread.
If you add that, make sure to account for the fact that the Psi-die can't go above it's max size, so rolling a 1 when you are already at your max size doesn't do anything.
Canto alla vita
alla sua bellezza
ad ogni sua ferita
ogni sua carezza!
I sing to life and to its tragic beauty
To pain and to strife, but all that dances through me
The rise and the fall, I've lived through it all!
Yep... that's also in my models. I have a couple of meetings tonight... I'll try to add some of the details of my models to make validation possible.
The other person could be wrong.
Creating Epic Boons on DDB
DDB Buyers' Guide
Hardcovers, DDB & You
Content Troubleshooting
If you know Python, here's the code I used for my simulations. I used a jupyter notebook which is why you'll see the print() statements followed by a sys.stdout.flush(). Please don't to be too harsh, it's quick and dirty code. I'm sharing so people can validate/disprove my numbers.
Here's the math I used. This "shows the work" when your max die size of a d8. I picked the d8 for several reason:
I don't know a good way to display a Markov chain here, so I'm going to try a list (I'm not reducing fractions... I wanted obvious numbers):
The Transition probability matrix is:
The first passage times are calculated (I think... man, I need a math person to validate this) with "(I - Q)^-1 * 1". Where I is the identity matrix, Q is the 3x3 matrix in the upper left of the transition probability matrix, and 1 is the all ones vector.
The part before the all ones vector can be calculated by putting the following in Wolfram Alpha (like I'm going to invert that matrix by hand ;-) ):
This returns the following matrix.
Multiplying that matrix by the all ones vector just sums each "row" of the matrix (where the top row is state "d8", middle row is "d6", and bottom row is "d4"):
This is how I calculated the expected number of rolls, if your max die size is a d8 and you start with a d8 (40 rolls), you start with a d6 (32 rolls), or you start with a d4 (18 rolls)
Those numbers are (very) roughly twice those that you put down so my initial assumption is that they're including the Psi Replenishment feature which gives you a once per long rest bonus action to reset the psi die back to it's original size.
I found out that MS Excel can perform matrix operations (never thought to look before). Here's a link to (an image of) my work for all Psi Die sizes:
https://drive.google.com/file/d/1HoRc0DY6-fwTtGTQU6U9DvpS4j3z6yHP/view?usp=sharing
A few comments on that file:
A few comments in general:
So, with this, I think I'm done with these calculations (well, until someone finds a mistake that I've made). Thank you to anyone who actually read through my walls of text.
Statistics and linear algebra are two of my favorite things. Really interesting thread, thanks!
Well that’s not something you read every day.
Creating Epic Boons on DDB
DDB Buyers' Guide
Hardcovers, DDB & You
Content Troubleshooting
I almost feel as if I've just seen a unicorn.
(And to the OP: Sorry, I'm too terrible at math to be able to check your calculations...)
To the OP, I’m good at math, just never took statistics.
Creating Epic Boons on DDB
DDB Buyers' Guide
Hardcovers, DDB & You
Content Troubleshooting
The Psi Die is just one more thing that the DM has to keep track of since many player's can't be trusted not to fiddle with it. I won't be using any of the archetypes, feats, or materials that make use of it in my campaigns. I also won't allow to use said material in my campaigns.
Watch your back, conserve your ammo,
and NEVER cut a deal with a dragon!