
Pseudos |
2 people marked this as a favorite. |

@Bob_Loblaw
To be clear, there are only 2 steps.
1. Roll 2d12. Reroll if both are 12.
2. If Die2<=Die1, use Die1+1, otherwise use Die1.
That's it. It's die1 or die1+1.
@ForksOfSpite
With the phrase 'elegant solution!' I now understand what you meant, sorry about that.
For those logically inclined, I actually came up with an algorithm to let you turn any dice into evenly weighted distributions for other numbers, using a minimum number of rolls, at the cost of additional rerolls. (a generalized solution if you will)
Wall of text incoming.
I am a logician, not a statistician, so my terms may be off.
For dice 'D' rolling between between one and 'd', to get an even distribution in a desired range of numbers with result 'A' between 1 and 'r':
1. Determine the minimum whole number of dice 'N' such that r<=d^N, or N>=Log base d of r. The number of outcomes, d^N, is 'X'. (you can use a larger N if you wish)
2. Determine the unique number rolled Y;
Y=D1 + d*(D2-1) + d^2*(D3-1) + d^3*(D4-1) + d^4(D5-1) ... etc.
(generally y=1, for each Dx: Y+=d^x*(Dx-1) )
This number is unique for the set of dice we're using, so we have even distribution. Note that 1<=Y<=X.
3. Determine the range of numbers that are usable/unusable to keep even distribution. The increment, I, is the whole number of X/r; the remainder is our unusable space, U.
4. For every increment I our Y is, add one to A. The U highest numbers result in a reroll. (Simply, if Y<=X-U, A=RoundDown(Y/I), otherwise reroll) We have an answer! It's just not remotely elegant...
5. (epilogue) To minimize the number of rerolls, we want to minimize U; in step 1, instead of finding the minimum N, consider minimizing D^N%R against the difference between the current and minimum N. (% 'modulus' is remainder)
Let's do some examples:
Our example:
Die size 12 rolling between one and 12, for numbers between 1 and 13
D=12, d = 12, r = 13.
1. 13<=12^2=144; N=2, X=144
2. D1=3, D2=6; so Y=3+12*(6-1)=3+12*5=3+60=63=Y.
3. 144/13 rounded down is 11=I, remainder U=1
4. so D1=12, D2=12 needs rerolled, and each 11 possibilities we increment 1. Our Answer, A, if not {12,12}, =RoundDown((D1+12*(d2-1))/11) That's terribly complicated though!
5. U is 1, we are already optimized
For two dice, we can easily make a table, note patterns, and extrapolate. In this case, I noticed we had the D1 +1s showing up for each possibly in D1. I therefore moved the increments to the top of each column, and simplified the formula.
Die size 3 rolling between one and 3, for number between 1 and 13
D=3, d=3, r=13.
1.13<3^3; N=3, X=27
2. D1=2, D2=3, D3=1; so Y=2+3*(3-1)+3^2*(1-1)=2+3*2+3^2*0=2+3*2+9*0=2+6=8=Y
3. 27/13 rounded down is 2=I, remainder U=1
4. So if {3,3,3} reroll, otherwise A=RoundDown(Y=D1+3*(D2-1)+3^2*(D3-1)
Let's do an actual useful application; maybe you're a barbarian wielding a greataxe, and got to session without a d12. You can avoid the bell curve of 2d6 using 2d6 by:
1. roll 2d6
2. divide D2 by 3, round up; A= d1*d2.
There are numerous ways to solve the above problem, and making a table help identify solutions.
Let me know if you have any questions.