
Dados de diez caras (entre otros) – Imagen por Jorge Leal
Para un pequeño proyecto que tengo entre manos ahora mismo tuve que hacer una clase Java que simulara tiradas de dados de distinto rango (no es lo mismo un dado de seis caras que uno de cien). El código que he elaborado simula la tirada de un dado del rango que quieras o de un conjunto de dados iguales.
Os dejo el código para que lo utilicéis si queréis. Véis que es extremadamente simple, nada que nadie con una mínima idea de programación no hubiera podido hacer incluso mejor. Soy consciente de que no será el más eficiente pero me vale; no obstante si tenéis propuestas de mejora no lo dudéis y usad los comentarios, que para eso están.
package Random;
import java.util.ArrayList;
public class Dados {
public static int tirarDado(int rango) {
double resultado;
resultado=Math.random()*rango; // Se le suma 1 si el valor del 0 es 10.
return (int)resultado;
}
public static ArrayList<Integer> tirarDados(int numero, int rango) {
ArrayList<Integer> resultados=new ArrayList<Integer>();
for (int i=0; i<numero; i++) {
resultados.add(tirarDado(rango));
}
return resultados;
}
}
Si lo preferís, acabo de inaugurar (probablemente, de nuevo, mal) mi primer repositorio público propio, dedicado al proyecto que estoy haciendo a ratos muertos. Está alojado en Github. Sabréis lo que hacer con él.
Buenas Manu. La verdad es que no entiendo el comentario que pones, pero creo que siempre tendrías que sumar 1. Cuenta que el random es de 0.0 <= x < 1.0, por lo que si quieres de 1 a Rango, o sumas o no llegarías a Rango y te podría salir un cero.
Tendría que ser:
return 1 + (int) resultado;
Un saludo
Buenas. Te explico la razón de ese comentario
¿Alguna vez viste dados de rol? Un D10 normal tiene en cada una de sus caras un dígito entre el 0 y el 9. En tanto que este código se elaboró, básicamente, para rellenar fichas de un juego de rol de manera automática, no puse ese +1. El comentario, sobre todo, es para recordar que si quieres una tirada entre 1 y 6 debes sumar un 1 a ese resultado.
¡Ah vale! Ya me imaginaba yo que había algo que se me escapaba.
Los dados de rol que he visto eran sólo virtuales, en el baldur’s gate.