Método tabular
Para dos dados, la forma más sencilla de hacerlo es hacer una cuadrícula bidimensional, y luego contar el número de resultados.
A 1 2 3 4 Chances
B ----------- Of 24
1 | 1 2 3 4 | 1
2 | 2 2 3 4 | 3
3 | 3 3 3 4 | 5
4 | 4 4 4 4 | 7
5 | 5 5 5 5 | 4
6 | 6 6 6 6 | 4
Uno puede desenvolver tal tabla en una segunda tabla...
AB 1 2 2 2 3 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 6 6 6 6 Chances
C -------------------------------------------------- of 4*5*6
1 | 1 2 2 2 3 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 6 6 6 6 | 1 (1-0)
2 | 2 2 2 2 3 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 6 6 6 6 | 7 (8-1)
3 | 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 6 6 6 6 | 19 (27-16)
4 | 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 6 6 6 6 | 37 (64-27)
5 | 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 | 36 4*(25-16)
6 | 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 | 44 4*(36-25)
7 | 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 | 24
8 | 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 | 24
---------------------------------------------------
Método de las fórmulas
Dado A B, y cualquier N A, las probabilidades de N sobre el mayor de 1dA y 1dB son (N^2)-((N-1)^2)/(A*B), y cualquier A
Para 3d, donde N A B C, las probabilidades de N son ((N^3)-((N-1)^3))/(A*B*C).
IIRC, Donde A < N B C, las probabilidades de N son A*((N^2)-((N-1)^2))/(A*B*C).
IIRC, donde A B < N C, las probabilidades de N son A*B/(A*B*C)
Para 4d, debería ser... N A B C D, chance(N)= ((N^4)-(N^3))/(A*B*C*D)
A N B C D, chance(N)= A*((N^3)-(N^2))/(A*B*C*D)
A B N C D, chance(N)= A*B*((N^2)-(N^1))/(A*B*C*D)
A B C N D, chance(N)= A*B*C/(A*B*C*D)
Y así sucesivamente...
Método programático
Es posible utilizar bucles for/next anidados. Proporcionaré un ejemplo en python, porque es barato, fácil y tiene herramientas ingeniosas como .sort()...
T = 0
R = [0,0,0,0,0,0,0,0,0,0,0]
' R needs one more "0," than the largest number of sides
' we set up a for line for each die, with the possible results in the entries.
For A in [1,2,3,4]:
for B in [1,2,3,4,5,6]:
for C in [1,2,3,4,5,6,7,8]:
for D in [1,2,3,4,5,6,7,8,9,10]:
' now we do actual work...
temp = [0,0,0,0]
' reset temp
temp[0]=A
temp[1]=B
temp[2]=C
temp[3]=D
' we've just loaded the current die's values into array Temp
temp.sort()
' we've just put them into order
n = temp[3]
' we get the high die
R[n] += 1
' we increment the count for a result of n
T += 1
' we count the total iterations.
X = 0
' we're setting our output loop next, and it uses X as a counter
for Y in R:
print X, Y
' print current entry labeled.
X += 1
' increment X
Se pueden utilizar métodos similares en muchos lenguajes, pero para este tipo de cálculos uso Python por sus arrays realmente robustos.
2 votos
Esto podría responderse mejor en el sitio de matemáticas de stack exchange math.stackexchange.com
2 votos
¡Bienvenido! Me alegra saber que estás trabajando en un juego. Sin embargo, he votado para cerrar esta pregunta. El motivo es que las preguntas aquí deben ser específicas y con respuesta. Ahora mismo lo único que podemos hacer con esta pregunta es remitirte a una fuente externa. Tal vez una mejor táctica sería comenzar a crear su modelo estadístico y preguntarnos si se encuentra con algún problema. Nos has dicho muy poco sobre tu sistema y aún menos sobre lo que estás tratando de lograr con tu mecánica. A falta de enlazarte con anydice o algo similar, no hay mucho más que podamos darte.
5 votos
En este sentido, te animo a que sigas preguntando a medida que te encuentres con problemas específicos en tus esfuerzos de desarrollo de juegos. Como menciona Phil, a veces las matemáticas pueden estar fuera del alcance de este sitio y Validación cruzada o Matemáticas podrían ser mejores lugares para preguntar, pero la mayoría de las preguntas específicas relacionadas con el desarrollo de juegos de rol se pueden plantear aquí y nos encantaría ayudar.