Series aleatorias en Excel


No es una práctica demasiado habitual, ni en el mundillo de las apuestas ni fuera de él, el hacer simulaciones de nuestras estrategias antes de llevarlas a la práctica. Resulta más excitante, y 'real', el hacer las pruebas con dinero que con el ordenador, aunque el resultado de estas pruebas sea absolutamente real y, en la mayoría de los casos, no tan excitante. Para intentar minimizar este efecto en nuestro bank, vamos a dar nuestros primeros pasos en la simulaciones y lo primero que debemos dominar es cómo generar numeros aleatorios. Para ello Excel dispone de varias funciones:

La funcion =aleatorio() nos devuelve un número 'pseudoaleatorio' entre [0,1). No me he equivocado con los paréntesis, es la notación matemática para decir que el número es mayor o igual que 0 y menor extricto que 1. Es decir, se acercará todo lo que queramos a 1 pero nunca nos devolverá 1. Esto se puede representar también así [0,1[

Si lo que necesitamos es obtener números aleatorios entre otros dos números diferentes deberemos utilizar la siguiente fórmula:

=aleatorio()*(B-A)+A

Esta fórmula nos va a devolver números aleatorios entre [A, B).

Utilizando la función =aleatorio.entre(A;B) obtenemos también números aleatorios entre [A, B], aunque en este caso los números que nos devuelve la función son enteros en lugar de números reales, que son los que devuelve la función aleatorio().

Estas funciones se pueden utilizar, entre otras muchas cosas, para generar resultados al azar de apuestas. Por ejemplo utilizando =aleatorio.entre(0;1) podríamos generar una columna de ceros y unos tan larga como queramos. El reparto de 0 y 1 será al 50% y se acercará más a este número cuanto mayor sea la cantidad de números generados.

Generando sólo 10 números, con un 1 más o menos podemos pasar del 50% al 60%. Este cambio en 100 números nos haría pasar de 50% a 51%, y en 1000 el cambio sería únicamente de 1 décima porcentual.

Si necesitamos obtener una distribución de 1 y 0 con un porcentaje diferente al 50%, debemos combinar la función =si(condición;resultado si verdadero;resultado si falso) con la función =aleatorio(), de esta forma:

=si(aleatorio()>0.6;1;0)

Con esta función generaremos un conjunto de unos y ceros en los que tendremos un 60% de ceros y 40% de unos. Aquí, igual que hemos comentado en el ejemplo anterior, cuanto mayor sea la cantidad de números generados mayor será la aproximación a estos porcentajes.

Algo similar podemos hacer para generar resultados de partidos de fútbol. La función ahora nos debe devolver tres valores 1, X ó 2 con los porcentajes que le marquemos. En este caso la función se complica un poco más, ya que necesitamos crear una columna para los números aleatorios y otra para la fórmula. La hoja quedaría algo así:


Para comprobar la cantidad de unos, equis y doses que ha generado, utilizaremos la función =contar.si(B2:B101;1). Esta función nos devolvería la cantidad de 1 que hay en el rango B2:B101. El porcentaje lo podemos calcular simplemente dividiendo este valor por la cantidad de números generados, que en este ejemplo son 100. Para saber la cantidad de números que hay en la columna también podemos usar la funcion =contar(A2:A101). OJO, no me he equivocado, cuento la cantidad en la columna A, que es la que contiene los números aleatorios, porque esta función cuenta la cantidad de celdas QUE CONTIENEN UN NUMERO y en la columna B tenemos números (1 y 2) y letras (X). Si queremos contar en la columna B, debemos usar =contara(B2:B101) que cuenta la cantidad de CELDAS NO VACIAS.

No me extiendo más y dejamos esta primera entrada aquí. En las siguentes seguiremos más aplicaciones de las series aleatorias en excel y su uso en simulaciones.

4 Comentarios:

Taxidermista dijo...

Imagino que has traducido este post de algún post anglosajón porque usas la palabra "excitante" de un modo que no se usa en castellano y como aparente traducción directa del "exciting" inglés. La traducción correcta sería "emocionante", no "excitante". Cuidemos un poquito el idioma y evitemos meter estas anglochorradas.

Buzjss dijo...

Pues siento desilusionarte pero los articulos del blog no son copiados de ninguna web ni inglesa ni española.

Excitante, es una palbra que aparece en el diccionario de la real academaia de la lengua y sus raices son latinas no inglesas. Uno de sus significados es 'Producir nerviosismo o impaciencia' y otro de ellos es Provocar entusiasmo, enojo o alegría cualquiera de ellos es aplicable al caso del que estaba hablando.

De todas formas gracias por el apunte.

sam dijo...

Hola,
yo de apuestas ni idea, pero me gustan las estadísticas y el blog me sirve para ver aplicaciones reales, y me ha surgido una duda con eso de hacer simulaciones con el excel

¿Hay alguna forma de obtener números aleatorios pero que no cuente con un valor intermedio?

Me refiero con alguna fórmula directa

me explico:
vamos a suponer que quiero predecir una carrera de tres coches:

el primer coche puede quedar 1º,2º ó 3º
aleatorio.entre(1;3)

el segundo coche también puede quedar 1º, 2, ó 3º pero depende del resultado del primer coche

si el primer coche queda 2ª el segundo coche ya no puede quedar 2º, sería un aleatorio.entre(1;3) pero no vale q salga el 2

y el resultado del tercer coche depende de los dos anteriores


entonces la idea es encadenar de alguna forma los tres aleatorios empleados para la simulación

Desconozco si hay alguna función en excel que lo haga del tirón o si hay q romperse la cabeza ideando algún procedimiento

Gracias

Buzjss dijo...

Si te gustan las matematicas sabrás que hay siempre más de un camino para llegar a la solución. Las simulaciones no son una excepción.

El planteamiento que haces no es correcto, para ese caso lo más fácil sería hacer ternas de numeros que nos identifican la posición en la que van a quedar los coches. Por ejemplo:

317 significaría que el primer coche queda el tercero, el segundo gana y el tercero queda septimo. Luego le asignas una probabilidad a este resultado y simulas con estas probabilidades.

No se si lo habrás entendido, necesitaría una entrada con imagenes para explicarlo mejor.

Un saludo