Tenía curiosidad por saber, ¿cómo implemento la probabilidad en Java? Por ejemplo, si las posibilidades de que una variable se muestre son 1/25, ¿cómo implementaría eso? O cualquier otra probabilidad? Por favor, apúntame en la dirección general.Probabilidad en Java
Respuesta
Utilizaría Random para generar un número aleatorio, luego compárelo con un literal para que coincida con la probabilidad que está tratando de lograr.
Así dado:
boolean val = new Random().nextInt(25)==0;
val
tendrá una probabilidad 1/25 de ser verdadero (desde nextInt()
tiene una probabilidad incluso de devolver cualquier número a partir de 0 y hasta, pero no incluyendo, 25.)
Por supuesto, también debe tener import java.util.Random;
.
Como se señala más adelante, si usted está recibiendo más de un número aleatorio que sería más eficiente para reutilizar el objeto aleatorio en lugar de volver a crearlo todo el tiempo:
Random rand = new Random();
boolean val = rand.nextInt(25)==0;
..
boolean val2 = rand.nextInt(25)==0;
¡gran lógica! ¡Gracias! –
+1: Colocando 'new Random()' en un campo o variable y reutilizándolo ayudaría a la eficiencia. –
@PeterLawrey tiene razón, por supuesto, he editado la respuesta de manera apropiada. ¡Simplemente lo puse de esa manera como un ejemplo de 1 línea! – berry120
Generalmente utiliza un generador de números aleatorios. La mayoría de ellos devuelve un número en el intervalo [0,1] por lo que luego se verifica si ese número es < = 0.04 o no.
if(new Random().nextDouble() <= 0.04) { //you might want to cache the Random instance
//we hit the 1/25 (4%) case.
}
O
if(Math.random() <= 0.04) {
//we hit the 1/25 (4%) case.
}
Tenga en cuenta que hay múltiples generadores de números aleatorios que tienen propiedades diferentes, pero para aplicaciones simples de la clase Random
deberían ser suficientes.
En el caso general, esta solución que utiliza rand.nextDouble() es mejor que la respuesta aceptada, ya que puede aplicarse a cualquier probabilidad arbitraria (en lugar de solo a 1/x para un entero dado x). Por ejemplo, si su probabilidad de destino es 33.5%, no hay una solución simple y limpia usando rand.nextInt(). – shiri
@shiri que depende debido a posibles problemas de precisión. Usando números enteros puedes crear un número entero entre 0 y 1000 y verificar que el valor esté por debajo de 335. – Thomas
de acuerdo, supongo que se trata de una cuestión de preferencia. Cuando pienso en las probabilidades, tiendo a pensar en términos de números en el rango de [0,1], por lo que me parece que nextDouble() <= X es más limpio. – shiri
Java tiene una clase llamada java.util.Random
que puede generar números aleatorios. Si quieres que algo suceda con probabilidad 1/25, sólo tiene que generar un número aleatorio entre 1 y 25 (o 0 y 24 inclusive) y comprobar si ese número es igual a 1.
if(new java.util.Random().nextInt(25)==0){
//Do something.
}
Tal vez se puede implementar esta con generación de números aleatorios.
Random rn = new Random();
double d = rn.nextDouble(); // random value in range 0.0 - 1.0
if(d<=0.04){
doSomeThing();
}
Desde 1.7 Es mejor utilizar (en el entorno concurrente al menos):
ThreadLocalRandom.current().nextInt(25) == 0
Un generador de números aleatorios aislado a la rosca actual. Al igual que el generador aleatorio global utilizado por la clase matemática, un ThreadLocalRandom se inicializa con una semilla generada internamente que de lo contrario no se puede modificar. Cuando corresponda, el uso de ThreadLocalRandom en lugar de los objetos aleatorios compartidos en programas concurrentes generalmente encontrará mucha menos carga y contención. El uso de ThreadLocalRandom es particularmente apropiado cuando varias tareas (por ejemplo, cada una ForkJoinTask) usan números aleatorios en paralelo en grupos de hilos. Los usos de esta clase normalmente deben tener la forma: ThreadLocalRandom.current(). NextX (...) (donde X es Int, Long, etc.). Cuando todos los usos son de esta forma, nunca es posible compartir accidentalmente un ThreadLocalRandom en varios hilos.
Esta clase también proporciona métodos adicionales de generación aleatoria limitada usados comúnmente.
- 1. probabilidad en javascript ayuda?
- 2. Probabilidad de números aleatorios
- 3. Notación de probabilidad
- 4. Probabilidad de resultados Algoritmo
- 5. Código de probabilidad Problema
- 6. Probabilidad de colisiones SHA1
- 7. Números aleatorios basados en una probabilidad
- 8. ¿Qué es Probabilidad de cruce y probabilidad de mutación en algoritmo genético o programación genética?
- 9. Generación de una distribución de probabilidad
- 10. Editor de células de probabilidad
- 11. Probabilidad de colisión utilizando la mayoría de los bits significativos de un UUID en Java
- 12. Implementar la función de distribución de probabilidad en el problema Java
- 13. Probabilidad de trazado con ggplot2 (no densidad)
- 14. calcular el porcentaje de probabilidad de Poisson
- 15. ¿Cómo elegir un artículo por su probabilidad?
- 16. Rutinas de cuadratura para densidades de probabilidad
- 17. Obteniendo densidad de probabilidad de datos
- 18. Probabilidad de clasificación WEKA de las clases
- 19. cambiar probabilidad de obtener un número aleatorio
- 20. ¿Construir un árbol de probabilidad usando php?
- 21. scikit-learn GMM producir probabilidad registro positivo
- 22. Generador de números aleatorios de probabilidad
- 23. Valor aleatorio de enum con probabilidad
- 24. Implementación de un algoritmo simple (para calcular la probabilidad)
- 25. ¿Cómo puedo trazar la estimación de máxima probabilidad en Python?
- 26. ¿Cómo calculo la probabilidad de un cuantil determinado en R?
- 27. Biblioteca gráfica de Java para dibujar diagramas de árbol de probabilidad
- 28. Probabilidad de encontrar la mediana con espacio finito
- 29. quicksort aleatorizado: ¿probabilidad de comparación de dos elementos?
- 30. Teoría de la probabilidad y planificación de proyectos
echa un vistazo a java Clase aleatoria. Eso le permite generar un número aleatorio, y puede ir desde allí ... –