On 06/01/06, Jim F. [email protected] wrote:

like:

rand(16)+3 rand(16)+3 rand(16)+3

Okay, that output is bogus. However, it is not rand(16) at all. It’s:

(1…3).inject(0) { |sum, ii| sum + (rand(6) + 1) }

The fact that it is three 6-sided dice rolled is important (and is

perhaps more important in a PRNG) because the weighting is a little

different. With rand(16) + 3 you’re just as likely to get 3 as you are

18. With three rand(6) + 1 values, you’re going to get much closer to a

bell curve than a straight probability line. This is a good thing,

because in D&D, 10 is described as absolutely average and 12 is the

high-end for most people. Adventurers, of course, can go to 18, but even

16 is good. Gandalf would be an 18 INT; Sam might be an 11 INT (INT ==

“intelligence”).

Or, for something more complicated:

roll.rb “(5d5-4)d(16/d4)+3”

31

What is the -4 and the /d4 do?

(5d5-4) => Roll a 5-sided dice 5 times and take the sum, subtract 4.

=> Result will be between 1 and 21.

(16 / d4) => Roll a 4-sided dice and divide 16 by the result.

=> Result will be 4, 5, 8, or 16.

d => Roll a [4, 5, 8, or 16]-sided dice 1-21 times and total.

=> The total result will be between 1 and 336.

+3 => Add three to the result.

=> The final result will be between 4 and 339.

Does the +3 apply to (5d5-4)d(16/d4) or to (16/d4) only, assuming it

matters since I don’t know what this stuff does.

d binds tighter than addition.

A few more things… Feel free to either craft this by hand or an

available lexing/parsing library. Handling whitespace between

integers and operators is nice. Some game systems use d100 quite

often, and may abbreviate it as “d%” (but note that ‘%’ is only

allowed immediately after a ‘d’).

So d100 == d% == d00

Yes.

and

100 == 00

No. d00/d%/d100 all refer to values from 1 to 100. It should be

considered impossible to get a value of 0 from dice. Strictly speaking,

d100 should be a special case simulated where you are rolling two d10

values and treating one of them as the 10s and one of them as the 1s.

Again, it results in a slightly different curve than a pure d100 result

would be. One gaming system developed by Gary Gygax after he was ousted

from TSR in the mid-80s used what he termed d10x, which was d10*d10,

resulting in values from 1 - 100 with a radically different probability

curve than a normal d100.

The “natural” dice created are:

d4, d6, d8, d10, d12, d20

Novelty dice created in the past include:

d30, d100

The latter is quite unwieldy.

Strictly speaking, it is not possible to make a die (polyhedron) with an

odd number of faces, but d5 can be simulated by doing a rounded d10/2 or

d20/4.

-austin