Al calcular y manipular probabilidades en Java, y luego expresarlas como porcentajes, ¿cuál es la mejor estructura de datos para representarlas?¿Cuál es la forma correcta de representar y manipular probabilidades y porcentajes en Java?
Los nativos double
y float
no parecen candidatos particularmente ideales, ya que tienen problemas de redondeo que pueden introducir errores cuando el redondeo ocurre varias veces y se agrava.
BigInteger
funciona bien para calcular permutaciones y combinaciones, y BigDecimal
parece que podría ser un buen candidato para los valores no enteros, pero ¿hay algo más adecuado para tratar los porcentajes?
Nota: En este caso, las probabilidades que se calculan son de naturaleza similar a las que involucran mazos de cartas, pero con cientos de cartas. Para los más inclinados a las matemáticas, estoy trabajando específicamente con Multivariate Hypergeometric_distributions.
¿Siempre serán porcentajes enteros? Si es así, usa un int. BigInteger es exagerado porque su número no va a ser más grande que lo que puede caber en un número entero normal. –
No, los porcentajes generalmente estarán en el rango de [0,1], pero se mostrarán en un formato como '23.29945%'. 'BigInteger' se usa para cálculos factoriales. – cdeszaq