Press "Enter" to skip to content

Trocitos de código (I). Lanzando una moneda millones de veces: ¿cara o cruz?

Hace unos días explicaba cómo realizar una simulación del lanzamiento de un dado utilizando las funciones de generación de número aleatorios y de recuento de la hoja de cálculo. Los resultados del experimento permitían comprobar la Ley de los Grandes Números.

Diseñar la hoja de cálculo que simula el experimento no entraña demasiada dificultad, si uno sigue los pasos indicados en la actividad y ha utilizado fórmulas de hoja de cálculo en alguna ocasión (recomiendo echar un vistazo a las fichas sobre OpenOffice Calc que preparé hace tiempo). Sin embargo, el entorno de hoja de cálculo no siempre es el más adecuado para realizar algunos experimentos. Cualquiera que intente aumentar el número de lanzamientos de dado de la actividad, comprobará que la memoria del sistema se resiente, y es más que probable que el ordenador se «cuelgue» durante algunos segundos. Los programas de ofimática son lo que son; no les podemos pedir más.

En realidad es una excusa para introducir una nueva sección en el blog: «Trocitos de código», entradas en las que comparto algún fragmento de código (conocidos en inglés como, Code Snippets) escritos con algún lenguaje de programación y que resuelve algún problema concreto. No es mi intención (de momento) explicar ningún concepto de programación, pero si despertar la curiosidad por este arte y utilizarla como herramienta para poner a prueba y comprender mejor algunos conceptos matemáticos.

Lanzamiento de una moneda

En esta ocasión propongo la simulación del lanzamiento de una moneda para comprobar de nuevo la Ley de los Grandes Números:

«La frecuencia relativa de un suceso tiende a estabilizarse hacia una constante a medida que se repite el experimento.»

En el caso de una moneda, en cada lanzamiento la probabilidad de que salga «cara» o «cruz» es exactamente la misma (son sucesos equiprobables), de modo que para cada posible resultado la probabilidad es del 50% (0,5 para «cara» y 0,5 para «cruz»).

La probabilidad de un suceso es la constante a la que se aproxima la frecuencia relativa cuando el experimento se repite muchísimas veces.

Simulación con Java: versión «mini»

Sabemos que debemos repetir el experimento de lanzar la moneda un número «muy grande» de veces. El siguiente fragmento de código escrito en Java realiza precisamente el experimento de lanzar una moneda. Por defecto lo hace 10 millones de veces (l=10000000) y cada 5000 lanzamientos (m=5000) muestra la frecuencia relativa hasta el momento. Lógicamente, estos valores se pueden cambiar.

Para modificar el problema, bastaría con utilizar cualquier editor de «texto plano» para realizar los cambios. Y para generar el programa final y probarlo, habría que disponer de un entorno de compilación y ejecución de Java. Bien, nada de esto es necesario. Existen en Internet algunos entornos de compilación y ejecución online, que permiten probar fragmentos de código. Este es el caso de rextester, una página web en la que podemos escribir nuestro código en varios lenguajes de programación y probar su funcionamiento, además de guardarlo y compartirlo con otros usuarios.

He utilizado este entorno para que podáis probar fácilmente la versión «mini» del programa que realiza la simulación del experimento (clic sobre la imagen del código). Una vez en la web de rextester, basta con hacer clic sobre «Run it» o darle a la tecla F8.

Simulación con Java: versión completa

La versión anterior utiliza el código mínimo (o casi) para realizar la simulación. Este segundo ejemplo de código, mucho más completo y con comentarios, muestra la simulación paso a paso, con los detalles de los lanzamientos de moneda.

Una vez lanzada la simulación, observamos los resultados del experimento. En cada fila aparecen 10 lanzamientos de moneda, con una C o una X, según el resultado de «cara» o «cruz» obtenido. Cada 10 lanzamientos se calcula la frecuencia relativa del suceso «sacar cruz». En los primeros lanzamientos, observamos que el valor de frecuencia relativa ronda 0,5 pero es inestable.

Sin embargo, a medida que el número de lanzamientos crece considerablemente, comprobaremos que la frecuencia relativa se va estabilizando y aproximando de forma más exacta al valor 0,5.

Simulación con GeoGebra

Este mismo experimento se puede realizar también con GeoGebra, un software para matemáticas del que ya he hablado en Esfera TIC en más de una ocasión. La simulación del experimento de lanzar una moneda se puede repetir 10, 100 y 1000 veces.

En Tiching | Lanzando una moneda millones de veces
Código 1 | Lanzamiento de una moneda (versión mini)
Código 2 | Lanzamiento de una moneda (versión completa)
Simulación con GeoGebra | Lanzamiento de una moneda
Foto código | Ruby ruby de Elliott Cable en Flickr
Foto moneda | Lucky Six – PCA 58 de Donald Macleod

4 Comments

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *