{"id":429,"date":"2016-01-19T21:53:49","date_gmt":"2016-01-20T03:53:49","guid":{"rendered":"http:\/\/naps.com.mx\/blog\/?p=429"},"modified":"2017-11-16T12:14:57","modified_gmt":"2017-11-16T18:14:57","slug":"pasos-para-construir-un-modelo-de-simulacion-en-java","status":"publish","type":"post","link":"https:\/\/naps.com.mx\/blog\/pasos-para-construir-un-modelo-de-simulacion-en-java\/","title":{"rendered":"Pasos para construir un modelo de simulaci\u00f3n en Java"},"content":{"rendered":"<p>A trav\u00e9s de un ejemplo vamos a ilustrar los pasos necesarios para construir un modelo de simulaci\u00f3n en Java, partiendo de una simulaci\u00f3n manual.<\/p>\n<p><a href=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-de-simulaci\u00f3n-en-java.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-435\" src=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-de-simulaci\u00f3n-en-java.jpg\" alt=\"modelo de simulaci\u00f3n en java\" width=\"1280\" height=\"960\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-de-simulaci\u00f3n-en-java.jpg 1280w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-de-simulaci\u00f3n-en-java-300x225.jpg 300w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-de-simulaci\u00f3n-en-java-1024x768.jpg 1024w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/a><\/p>\n<p><!--more--><\/p>\n<h2><strong>Primer ejemplo: Loter\u00eda instant\u00e1nea<\/strong><\/h2>\n<p>Imagine que se dise\u00f1a una loter\u00eda instant\u00e1nea, donde una tarjeta tiene tres filas. En cada fila hay dos casillas con los valores ocultos de $1 y $5. El jugador raspa solo una de las dos casillas de cada fila. Si descubre tres n\u00fameros iguales gana esa cantidad. <strong>\u00bfCu\u00e1l es la m\u00ednima cantidad que se debe cobrar por cada tarjeta si se desea tener ganancias?<\/strong><\/p>\n<p>Es decir, la siguiente tarjeta ganar\u00eda $1.<\/p>\n<p><a href=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-430\" src=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion1.jpg\" alt=\"modelo de simulaci\u00f3n\" width=\"276\" height=\"391\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion1.jpg 276w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion1-212x300.jpg 212w\" sizes=\"auto, (max-width: 276px) 100vw, 276px\" \/><\/a><\/p>\n<p>La siguiente tarjeta ganar\u00eda $5.<\/p>\n<p><a href=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-431\" src=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion2.jpg\" alt=\"modelo de simulaci\u00f3n\" width=\"276\" height=\"391\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion2.jpg 276w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion2-212x300.jpg 212w\" sizes=\"auto, (max-width: 276px) 100vw, 276px\" \/><\/a><\/p>\n<p>Y la siguiente tarjeta no ganar\u00eda nada:<\/p>\n<p><a href=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-432\" src=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion3.jpg\" alt=\"modelo de simulaci\u00f3n\" width=\"276\" height=\"391\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion3.jpg 276w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion3-212x300.jpg 212w\" sizes=\"auto, (max-width: 276px) 100vw, 276px\" \/><\/a><\/p>\n<h2><strong>Soluci\u00f3n mediante teor\u00eda de probabilidades<\/strong><\/h2>\n<p>La ganancia esperada viene dada por la siguiente f\u00f3rmula:<\/p>\n<p>Ganancia esperada = ($1\u00a0 * probabilidad de ganar $1) + ($5 * probabilidad de ganar $5)<\/p>\n<p>La probabilidad de ganar $1 = (1\/2) * (1\/2) * (1\/2) = 1\/8<\/p>\n<p>La probabilidad de ganar\u00a0 $5 = (1\/2) * (1\/2) * (1\/2) = 1\/8<\/p>\n<p>Ganancia esperada = 1 * (1\/8) + 5 * (1\/8) = $0.75<\/p>\n<p>Al cobrar <span style=\"color: #993300;\"><strong>$ 0.75<\/strong><\/span>\u00a0 por tarjeta los organizadores no pierden ni ganan dinero.\u00a0 (Con esa informaci\u00f3n los organizadores podr\u00edan decidir cu\u00e1nta ganancia les gustar\u00eda obtener, sin llegar a fijar un precio demasiado elevado).<\/p>\n<p>Ahora bien, se puede utilizar <strong>Simulaci\u00f3n<\/strong> para obtener un resultado similar. En este ejemplo podr\u00edamos seguir varias opciones.<\/p>\n<h2><strong>Simulaci\u00f3n f\u00edsica<\/strong><\/h2>\n<p>Se tendr\u00edan que imprimir una buena cantidad de tarjetas y hacer pruebas. Con este proceso obtendr\u00edamos una estimaci\u00f3n de la ganancia esperada, pero tiene el inconveniente de tener que imprimir una gran cantidad de tarjetas solo para hacer el experimento, lo que<span style=\"color: #993300;\"><strong> implica gastos de dinero y tiempo<\/strong><\/span>.<\/p>\n<h2><strong>Simulaci\u00f3n por analog\u00eda<\/strong><\/h2>\n<p>El juego se podr\u00eda simular por analog\u00eda, lanzando una moneda al aire para simular el raspado de una casilla. Si cae \u201ccara\u201d es como si saliera el \u201c1\u201d, y si cae \u201ccruz\u201d es como si saliera el \u201c5\u201d. Se lanza la moneda al aire tres veces y se registra la ganancia del juego: $1 si los tres lanzamientos son cara, $5 si los tres lanzamientos son cruces y $0 de otra forma. Se tendr\u00edan que hacer varios intentos, sumar las ganancias de todos los intentos y dividirlos entre el n\u00famero de intentos para obtener una estimaci\u00f3n de la ganancia esperada del juego.<\/p>\n<h2><strong>Simulaci\u00f3n por computadora<\/strong><\/h2>\n<p>Aunque se ha eliminado la impresi\u00f3n f\u00edsica de tarjetas, el m\u00e9todo anterior aun es trabajoso. Por lo que se puede usar una computadora para \u201clanzar\u201d la moneda, tabular los resultados y efectuar el c\u00e1lculo necesario.<\/p>\n<p>En un programa de computadora, el lanzamiento de la moneda se puede simular <span style=\"color: #993300;\"><strong>usando n\u00fameros aleatorios<\/strong><\/span> para representar el resultado del lanzamiento. Se generar\u00edan tres n\u00fameros aleatorios entre 0 y 1. Se registra la ganancia del juego: $5 si los tres n\u00fameros son mayores que 0.5 (tres cruces), $1\u00a0 si los tres son menores, y $0 de otra manera.<\/p>\n<p>La computadora puede programarse para sumar las ganancias y dividir el total para obtener una estimaci\u00f3n de la ganancia esperada.<\/p>\n<p>La simulaci\u00f3n por computadora nos evita\u00a0la impresi\u00f3n de las tarjetas y el esfuerzo manual de hacer los c\u00e1lculos, pero m\u00e1s que eso, una vez realizado el programa, podemos modificarlo para que corra 100, 1000 o 100 000 veces si se quisiera y as\u00ed tener resultados m\u00e1s exactos.<\/p>\n<h2><strong>\u00a0<\/strong><strong>El modelo de simulaci\u00f3n en Java<\/strong><\/h2>\n<pre class=\"theme:sublime-text font:droid-sans-mono toolbar:2 nums:false lang:java decode:true \" title=\"Modelo de simulaci\u00f3n en Java\">public static void main(String[] args) {\r\n        double aleatorio =0;\r\n        int i,j;\r\n        int max=100;\r\n        int cant5, cant1;\r\n        int ganancia=0;\r\n        double promedio=0;\r\n        for (i=1; i&lt;=max; i++){\r\n            cant5 = cant1 = 0;\r\n            System.out.print (\"Tarjeta \" + i + \"\\t\");\r\n            for (j=0; j&lt;3; j++){\r\n                \/\/ Simular el lanzamiento de moneda.\r\n                aleatorio = Math.random();\r\n                \/\/ Si el n\u00famero aleatorio es mayor  a 0.5 rasp\u00f3 $5\r\n                if (aleatorio &gt; 0.5){\r\n                   System.out.print (\"5 \\t\");\r\n                   cant5++;\r\n                }    \r\n                else{\r\n                    System.out.print (\"1 \\t\");\r\n                    cant1++;\r\n                }\r\n            }\r\n            \/\/ Si obtiene 3 n\u00fameros iguales gana esa cantidad\r\n            if (cant5 == 3){\r\n                System.out.print(\"Gana $5\");\r\n                ganancia+=5;\r\n            }\r\n            if (cant1 == 3){\r\n                System.out.print(\"Gana $1\");\r\n                ganancia+=1;\r\n            }\r\n            System.out.print(\"\\n\");\r\n        }\r\n        \/\/ Mostramos ganancia promedio por tarjeta\r\n        promedio = ganancia\/(double)max;\r\n        System.out.print(\"Ganancia promedio: \" + promedio); \r\n    }\r\n<\/pre>\n<h2><strong>Ejecuci\u00f3n del modelo de simulaci\u00f3n en Java<\/strong><\/h2>\n<p><a href=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion4.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-433\" src=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion4.jpg\" alt=\"modelo de simulaci\u00f3n en java\" width=\"573\" height=\"449\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion4.jpg 573w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/01\/modelo-simulacion4-300x235.jpg 300w\" sizes=\"auto, (max-width: 573px) 100vw, 573px\" \/><\/a><\/p>\n<p>En esta ejecuci\u00f3n se realizaron 100 simulaciones, en la imagen solamente vemos las \u00faltimas. Al realizar el c\u00e1lculo de la ganancia promedio obtenemos <strong>0.73<\/strong> (en otras ejecuciones puede obtenerse resultados ligeramente diferentes), lo que es muy cercano al c\u00e1lculo obtenido por teor\u00eda de las probabilidades.<\/p>\n<h2>En conclusi\u00f3n<\/h2>\n<p>En este art\u00edculo vimos como simular una actividad del mundo real que depende de datos aleatorios. No siempre podremos obtener resultados utilizando c\u00e1lculos matem\u00e1ticos pues en ocasiones \u00e9stos ser\u00e1n muy complejos. Tampoco se puede realizar simulaciones manuales o literales pues el costo econ\u00f3mico o de tiempo podr\u00eda llegar a\u00a0ser elevado. En estos casos, <strong>la simulaci\u00f3n por computadora utilizando modelos propios es relativamente sencilla y proporciona resultados confiables<\/strong>.<\/p>\n<h2><strong>Referencias<\/strong><\/h2>\n<ol>\n<li>Mathur K. y Solow D. (1996). <strong>Investigaci\u00f3n de operaciones: el arte de la toma de decisiones<\/strong>. Pearson Educaci\u00f3n, M\u00e9xico.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>A trav\u00e9s de un ejemplo vamos a ilustrar los pasos necesarios para construir un modelo de simulaci\u00f3n en Java, partiendo de una simulaci\u00f3n manual.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"amp_status":"","footnotes":""},"categories":[216],"tags":[97,125,96],"class_list":["post-429","post","type-post","status-publish","format-standard","hentry","category-simulacion-ciencias","tag-ejercicios-java","tag-programas-en-java","tag-simulacion-en-java"],"_links":{"self":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/429","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=429"}],"version-history":[{"count":7,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/429\/revisions"}],"predecessor-version":[{"id":441,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/429\/revisions\/441"}],"wp:attachment":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=429"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=429"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}