D&D GeneralCustom Dice Curve

Baron Opal II

Hero
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.

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

NotAYakk

Legend
No symmetric roll has a high point at 5 for 1-12.

Adding dice or removing constants is symmetric.

Syunsuke

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

Baron Opal II

Hero
So, what would be an example of non-symmetry?

tetrasodium

Legend
Supporter
you would need 5 2.4 sided dice ;D

dregntael

Explorer
Roll 3d6 and drop the highest is perfect for this: AnyDice

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);
}
}

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:

NotAYakk

Legend
... actually, 2d12 drop highest is average 4.51, which is a lot easier.

Or 3d12 drop highest, divided by 2.

dregntael

Explorer
Actually, an even better solution is to roll 1d12 and 2d6 and take the lowest result, which has an average of 5.01 according to anydice: AnyDice

I doubt you will be able to find anything closer than that.

Harzel

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:

Bohandas

Hero
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:

Replies
11
Views
470
Replies
5
Views
1K
Replies
46
Views
3K
Replies
20
Views
1K
Replies
17
Views
700