D&D General Custom Dice Curve

How would I go about generating a bell curve such that the range is 1-12 and the high point is 5?

Obviously, 2d6 come close. I was also thinking about 2d4 + 1d6 -2.
 

log in or register to remove this ad

Arvok

Explorer
2d4, then if you roll a pair of 4s you get to roll an additional d4. That should give you a bell curve with a high point at 5 and a 1 in 16 chance for each value from 9-12
 


Syunsuke

Roll 21.
2d4 + [lowest of 2d6] -2 ?
(2d4+2d6, drop higher number of d6s, subtranct 2)

anydice.png.jpg


 




NotAYakk

Legend
So, what would be an example of non-symmetry?
Roll (N+1)dX drop highest/lowest is going to be asymetrical. Drop lowest skews high, highest skews low.

Range is N to N*X. Diameter is (X-1)*N. OP wants a diameter of 11; so you need mixed dice, or use d12s.

d2 has diameter of 1, d4 has diameter of 3, d6 5, d8s 7. Adding up to 11 is basically 2d4+1d6, or 2d6+1d2.

Average for symmetrical is (1+12)/2 or 6.5. OP wants 5. So we should examine:

2d4+2d6 drop highest, 3d4 drop highest+1d6, etc.

I lack anydice chops. And there are 100s of cases. I guess I can write a C++ program... one sec.

Ok, (2d42d6) drop highest, then -2 is 5.31 (I just averaged the 1000-odd cases).

The min is 1, max is 12 in both cases.

Code:
#include<vector>
#include<iostream>

int eval(std::vector<int> v ){
    std::sort(v.begin(),v.end());
    v.pop_back();
    int r=0;
    for(int x:v)r+=x;
    return r;
}
std::vector<int> inc( std::vector<int> in, std::vector<int> const& max){
    for(int i=0; i<in.size();++i){
        if (in[i]==max[i]){
            in[i]=1;
            continue;
        }
        ++in[i];
        return in;
    }
    return {};
}

int total( std::vector<int> dice ){
    int total=0;
    std::vector<int> cur( dice.size(), 1 );
    while(!cur.empty()){
        total+=eval(cur);
        cur=inc(std::move(cur),dice);
    }
    return total;
}

int main(){
    auto x=total({4,4,6,6})/double(4*4*6*6);
    std::cout<<(x-2)<<"\n";
}
could be made way faster, but am lazy and finishes the problem in a fraction of a second on a phone cpu, so good enough.
 
Last edited:



Harzel

Adventurer
How would I go about generating a bell curve such that the range is 1-12 and the high point is 5?

Obviously, 2d6 come close. I was also thinking about 2d4 + 1d6 -2.

By "high point" do you mean the mean value (average) or the most likely single result? Those are not the same thing.
 

jgsugden

Legend
You have results oriented questions, but we only know a bit about your goals. Do you want the 2 and 12 to have equal probability? Should the total of the probability to the left of the 5 equal the total of the probability to the right of it?

The last time I tried to shift the probability curve around, I determined that my best approach was to change dice based upon training and talent levels. A weak PC with no training trying to do something would roll 2d4 while a strong PC with a lot of pysical training might be rolling 2d12. I added an exploding die mechanic (if a die hit the maximum value, you added a die and subtracted 1 from the result) and a few other tweaks and ended up with exactly what I needed.
 
Last edited:

Roll 1d20, reassigning the numbers above 12 as follows:

13=1
14=2
15=2
16=3
17=3
18=3
19=4
20=4

EDIT:
The following may be better as it has actual fives in it:

13=1
14=1
15=1
16=2
17=3
18=4
19=5
20=5

In any case the reassigned numbers need to add up to 22 and the total of all the numbers needs to add up to 100
EDIT:
If you want 5 to be the most likely number, you could also roll d% and replace the numbers above 12 with seventy-five "5"s, eight "4"s, and five "3"s
 
Last edited:

Epic Threats

An Advertisement

Advertisement4

Top