¿Cómo funciona las probabilidades de que salga un valor de una serie de valores a una cantidad especifica?

NOTA: Esta pregunta esta compuesta para usuarios que conocen sobre matemáticas y programación.

Me plantee esto ya que no entiendo esto de las probabilidades del todo pero lo expondré con un ejemplo práctico; digamos que tenemos 6 objetos con diferentes características cada uno pero el que siempre saldrá es uno de ellos pero los otros 5 saldrán con un porcentaje establecido y diferente cada uno, listaré cada uno para que sea haga más fácil la interpretación:

  • Objeto A: Siempre saldrá con probabilidad del 100/100
  • Objeto B: tendrá probabilidad en salir de un 50/100
  • Objeto C: 35/100
  • Objeto D: 15/100
  • Objeto E: 2/100

Lo que comprendo es que se establece un valor total de aparición del cual de cada 100 intentos, se presente el objeto a mostrar, a su vez se escoge al azar uno de ellos para ser mostrado pero ¿Cómo calcular esa probabilidad de aparición? Lo único que se me ocurre es generar aleatoriamente un valor del total asignado y dependiendo de este valor será el identificante para mostrar el objeto correspondiente, es decir, que al escoger al azar un numero y cae exactamente el 15, se debe de mostrar el objeto D pero si aparece el valor 73 al azar, se debe de mostrar el objeto A por ser el que siempre aparece pero en si, no se me ocurre otra manera para determinar la visualización de probabilidad de que salga un objeto a otro o en si, no conozco otro método para hacer lo que propongo!

A su vez, ¿Habrá la manera de que de cada 100 intentos salga la cantidad que expreso o que de cada cierto tiempo se bloquee la cantidad si llego al limite de muestra por dicho tiempo limite?

Respuesta
1

Si he entendido bien lo que necesitas es que algo aparezca con cierta probabilidad ¿no?.

Bueno, si este es el caso, a mi también se me ha planteado esta situación y se me han ocurrido un par de ideas de cómo podría resolverse.

Voy a usar uno de tus ejemplos, el Objeto C con una probabilidad de aparición del 35%.

Las formas que se me ocurre son estas:

  • Ya que el objeto aparece una 35 veces de cada 100 puedes crear un Array booleano de 100 elementos inicializados todos a false. Luego añades 35 true de forma aleatoria. Ahí tienes tu distribución aleatoria de probabilidad. Luego para saber si aparece el objeto o no selecciona una posición al azar: si es true el objeto aparece, si es false no.
  • Otra opción podría ser la siguiente: Ya que la probabilidad es del 35% podrías generar un número entre 0 100, si el número es menor o igual a 35 entonces se creará el objeto.
    En este mismo ejemplo otra opción sería que el número aleatorio sea mayor o igual que 100 - Probabilidad de esta forma, se creará el objeto si el número aleatorio es mayor que 65.
    Si prefieres usar números más pequeños pero flotantes puesdes generar un número aleatorio entre 0 y 1. Y aplicar la misma idea que antes pero con 0.35 o 0.65 respectivamente.

¡Gracias! por su respuesta y veo que la solución es en base a generar un número aleatorio y verificar en diferentes casos la creación del objeto pero también vi que nuestros pensamientos para hacer esto con los 5 objetos expuestos en mi ejemplo no saldrían con la probabilidad especificada, a lo que me refiero es que los objetos saldrán en base a la generación de los números aleatorios, es lo mismo que una ruleta de esas de casino, aquí podría salir cualquiera y no tendría esa probabilidad que se especifico, lo cual y como ya dije, nuestros planteamientos no calzarían en este ejemplo, espero que me pueda comprender y hasta ahora, estoy intentando resolver mi problema por mi cuenta pero si usted se le ocurre una idea de como solucionar esto, le agradecería!

PD: Según como yo lo veo, la probabilidad de que salga cada objeto no esta basada en de cada 100 intentos se crea cualquier objeto sino a la posibilidad de que aparezca alguno de ellos en digamos en el primer intento salga el B, a los 17 intentos salga el C o a los 250 salga el E, es decir, para mi cada intento se interpreta por 100 intentos a la vez, y si el valor de la probabilidad sale ese intento se convierte en el intento 100, para ser más claro, digamos que llevo hasta ahora 28 intentos y siempre me han salido el objeto A pero al llegar al intento 29, aquí me salga por ejemplo, el objeto C solo porque la probabilidad de que saliera dicho objeto es de casi 1/3 de que salga en ese intento, pero lo que dices sobre presentar el objeto mediante si el valor aleatorio es menor al propuesto, podría funcionar pero no se si este sea la solución correcta!

Entonces lo que necesitas es una especie de ruleta de la fortuna que devuelva cada objeto con cierta probabilidad. ¿Algo así como la probabilidad de "drop" de un videojeugo tipo Diablo?

Lo que me gustaría confirmar es: Si se pueden generar dos objetos a la vez, es decir, puede generarse un objeto A y uno B a la vez; o bien tiene que ser un único objeto con las probabilidades de que aparezcan que has puesto ahí.

Si es el primer caso simplemente haz lo que te escribí antes o lo que @gfellay te comenta en su propuesta.

Si es el segundo caso ten en cuenta de que la probabilidad total debe ser de 1 (o 100%).

Por lo que si tu objeto A aparece con una probabilidad del 100% siempre va a salir. Deberías repasar las probabilidades que propones para cada objeto.

Te escribo un ejemplo de probabilidades que podrían ser válidas:

A:50%, B:35%, C:10%, D: 5%

Teniendo que 50 + 35 + 10 + 5 = 100 por lo que la probabilidad está bien distribuida.

¡Gracias! por responder y le digo que es más o menos a lo que usted propuso, como la probabilidades de drop en un juego pero no necesariamente necesito que salgan dos objetos, solo necesito que salga uno de ellos pero según como lo que me dijo, en si el objeto A no tendría probabilidad de muestra solo es el caso de no cumplirse la probabilidad de los demás objetos al no cumplirse la probabilidad de dicho objeto y como no se cumplió dicha probabilidad, se muestra como predeterminado el objeto A pero veo que lo que plantean es en si lo que quiero que suceda, además cada intento es como la persona que lanza la moneda, los intentos son cada número aleatorio al generarse; le agradezco por responder!

2 respuestas más de otros expertos

Respuesta
1

De tu última pregunta deduzco que estás un poco confundido con el tema probabilidad.

Salvo para la probabilidad 100% (siempre sale) y 0% (nunca sale), para el resto de los valores, la probabilidad se cumple 'para un número lo suficientemente grande' y esto lo que significa es que a muy largo plazo respetará la probabilidad que te dieron (digamos, por ejemplo, 50%), pero en valores chicos puede que esto no sea así.

Ej/ Supongamos una moneda que puede salir cara o ceca (ambas con probabilidad 50%), si lanzás la moneda 100 veces no necesariamente vas a tener 50 y 50, sino que podrías tener 45-55, 48-52 o incluso llegar a darse el caso (aunque improbable) que obtengas todas caras (o cecas).

Respecto a la forma de visualizar el objeto, creo que la más sencilla es generar un número aleatorio (en general todos los lenguajes de programación tienen una función para generar un número entre [0 y 1), y luego haces tu comparación, Si el valor obtenido es menor al que deseás, entonces lo deberías mostrar y si es mayor o igual no lo muestras.

Ej/ 15%. Rango de aceptación [0, 15) (ojo que el 15 no está incluido)

Valor obtenido: 0.14 -> lo muestra

Valor obtenido: 0.15 -> no lo muestra

Salu2

Respuesta
1

Haz una tabla de probabilidades o ruleta como se muestra en la tabla, luego con la función aleatorio genera una probabilidad aleatoria que con la función buscarv le asigna le letra que cae dentro de esa probabilidad

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas