Muchas veces hemos jugado a juegos en los cuales puedes obtener o ganar una serie de premios y dependiendo de “la suerte” dicho premio te puede salir mejor o peor. Un ejemplo que me viene de inmediato a la cabeza puede ser Diablo 3, juego en el que al matar a un enemigo éste suelta objetos y al cogerlos dichos objetos pueden ser mejores o peores. Otro ejemplo que también me viene a la cabeza son los típicos juegos de sobres o cromos. Sin ir más lejos, el Fifa Ultimate Team es una modalidad de juego contenido actualmente dentro del Fifa (desde que apareciese por primera vez en el Fifa 09 como una expansión) que se basa en la obtención de jugadores mediante la compra de sobres de distinto tipo de calidad (oro, plata y bronce) en los cuales te tocan jugadores teniendo en cuenta que unos tienen mayor probabilidad de aparición que otros. De esta forma, el hecho de que te toque Messi o Cristiano Ronaldo en un sobre es infinitamente menos probable que el hecho de que te toque Iago Aspas, por ejemplo.

Pues bien, ha sido jugando concretamente a este último juego, al Fifa en su modalidad de FUT, en la que me ha venido a la cabeza la pregunta siguiente:

“¿Cómo diablos habrán hecho los desarrolladores para implementar un sistema de probabilidades y suerte para que sean más fáciles o menos fáciles el hecho de que te toque un jugador en un sobre?”

Pues bien, me puse a pensar y llegué a una implementación sencilla que pasaré a comentaros. Como sabéis, esta sección se llama “algoritmos de andar por casa” y la idea es plantear una solución de una forma entendible por cualquiera, sin necesidad de programación. Vamos a intentar plantear una forma de resolver el problema de repartir jugadores simulando un sistema de suerte con diferentes grados de probabilidad de obtener un jugador  concreto dentro de un sobre, al igual que en el “Fifa Ultimate Team”. Os cuento la solución a la que he llegado yo. Es bien simple y, obviamente, fijo que existirán mejores formas de desarrollar este sistema. Comencemos:

  • Vamos a establecer un total de 1000 jugadores.
  • Cada vez que compras un sobre pueden tocarte 10 jugadores distintos (no se permiten jugadores repetidos dentro de un mismo sobre)
  • Vamos a suponer 5 niveles de dificultad de obtención de cada jugador. Cada nivel de dificultad será una lista de jugadores de una longitud determinada. Esta puede ser la configuración de nuestras cinco listas:
    • Lista 1: ‘Jugadores_fáciles_de_obtener’, en la que tendremos al 60% de los jugadores, es decir, un total de 600 jugadores que son los más sencillos de obtener.
    • Lista 2: ‘Jugadores_normales_de_obtener’. En esta lista tendremos al 30% de los jugadores restantes, es decir, a 300 jugadores del total de 1000.
    • Lista 3: ‘Jugadores_difíciles_de_obtener’. En esta lista tendremos al 6% de los jugadores restantes, los cuales serán más complicados de obtener. Hacen un total de 60 elegidos.
    • Lista 4: ‘Jugadores_muy_difíciles_de_obtener’. En esta lista introduciremos un 4% de los jugadores que restan, es decir, 40.  En este sobre pondríamos a grandes estrellas pero reservaríamos a las 10 mega-estrellas para el siguiente y último sobre.
    • Lista 5: ‘Jugadores_de_platino’. Los más codiciados, las megaestrellas. En esta lista estarían los CR7, Messi, Neymar…y compañía. En total, 10 elegidos que serán los jugadores que todos los compradores desearán tener en sus sobres.
  • Las 5 listas definidas deben contener a los 1000 jugadores totales. En nuestro supuesto:
    • Lista 1 + Lista 2 + Lista 3 + Lista 4 + Lista 5 = 600 + 300 + 60 + 40 + 10 = 1000 jugadores totales.

Ahora viene lo complicado de nuestro algoritmo: ¿cómo establecer la dificultad de obtención de cada jugador para rellenar un sobre de jugadores con un total de 10 jugadores obtenidos al azar de entre el total de 1000 jugadores? Además, en la selección de los 10 jugadores que irán a nuestro sobre debemos respetar los 5 niveles de ‘dificultad de obtención’ que hemos estipulado mediante las 5 listas definidas anteriormente.

Pues bien, a ver qué os parece esta solución hiper-sencilla: Colocamos las 5 listas en orden de más fáciles a más difíciles, es decir, primero la Lista 1, después la Lista 2…y así hasta llegar a la lista 5. Una vez colocadas las 5 listas ordenadas por dificultad creciente nos situamos en la primera de ellas, la más fácil de todas. Nos ayudamos de un dado de 6 caras -los dados normales de toda la vida- de forma que haremos lo siguiente:

[ALGORITMO DE RELLENADO DE SOBRES]

Estas serán las acciones a realizar para rellenar el sobre de 10 jugadores al azar:

Paso 1: Lanzamiento del dado. Lanzamos el dado de forma que:

  • Si obtenemos un valor de 1 a 4, ambos inclusive, saltaremos al Paso 3.
  • Si obtenemos un valor de 5 o 6, ejecutaremos la acción indicada en el Paso 2.

Paso 2: Avanzar a la lista siguiente. Nos movemos de la lista en la que estamos a la siguiente lista respetando el orden establecido, es decir, creciente en dificultad. ¿Qué ocurre si estamos situados en la lista más difícil, es decir, en la Lista 5? Como no existe una Lista 6 a la que poder avanzar, si estamos en la Lista 5 y debemos pasar a la siguiente porque nos ha tocado un 5 o 6 con el dado, volveremos a la primera lista de todas, es decir, a la más fácil (la Lista 1). Una vez que hemos realizado el cambio a la lista siguiente, volvemos a ejecutar el Paso 1.

Paso 3: Selección de un jugador de la lista. En este paso, seleccionaremos un jugador al azar de la lista en la que estamos situados. Dicho jugador saldrá de la lista y lo introduciremos en nuestro sobre. Ahora contaremos cuántos jugadores tenemos en el sobre, de forma que:

  • Si tenemos 10 jugadores, nuestro algoritmo de rellenado de sobres habrá finalizado y tendremos nuestro sobre relleno con 10 jugadores distintos.
  • Si tenemos menos de 10 jugadores, vuelvo a situarme en la Lista 1 y ejecuto nuevamente el Paso 1.

Vamos a ver cómo a continuación algunas situaciones posibles:

Bueno, sólo espero haberme explicado bien ya que esta ha sido la primera entrada para la sección de “Algoritmos de andar por casa”.

Seguramente, vosotros tendréis ideas y mejoras para este sencillo algoritmo y yo estoy deseando leer vuestras propuestas por lo que dejad en los comentarios propuestas, ideas y lo que haga falta. Yo estaré encantado de leerlas.

algoritmos de andar por casa, altoritmo, azar, cartas, jugadores, probabilidad, sobres, suerte
Author torleone
Published
Views 27368

Fatal error: Allowed memory size of 62914560 bytes exhausted (tried to allocate 42974 bytes) in /homepages/0/d496947121/htdocs/clickandbuilds/chalejuegos/wp-includes/class-wp-comment-query.php on line 395