{"id":1387,"date":"2022-10-07T14:16:25","date_gmt":"2022-10-07T17:16:25","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/programacao\/?p=1387"},"modified":"2025-05-20T15:47:13","modified_gmt":"2025-05-20T18:47:13","slug":"algoritmo-problema-monty-hall","status":"publish","type":"post","link":"http:\/\/www.galirows.com.br\/meublog\/programacao\/algoritmo-problema-monty-hall\/","title":{"rendered":"Algoritmo para o problema de Monty Hall"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">O problema de Monty Hall \u00e9 um problema matem\u00e1tico que envolve a probabilidade de ser bem sucedido na escolha de uma porta que possui um pr\u00eamio. Para saber mais sobre esse problema, recomendo a leitura de <a rel=\"noreferrer noopener\" href=\"https:\/\/pt.wikipedia.org\/wiki\/Problema_de_Monty_Hall\" target=\"_blank\">https:\/\/pt.wikipedia.org\/wiki\/Problema_de_Monty_Hall<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eu fiz o v\u00eddeo a seguir para falar sobre o problema de Monty Hall e o algoritmo que desenvolvi. Ap\u00f3s o v\u00eddeo \u00e9 poss\u00edvel ter acesso ao algoritmo desenvolvido.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Algoritmo para o problema de Monty Hall\" width=\"685\" height=\"385\" src=\"https:\/\/www.youtube.com\/embed\/R2L-Ym8b7wE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Como o problema de Monty Hall depende de valores aleat\u00f3rios, recomendo a leitura do meu <a href=\"http:\/\/www.galirows.com.br\/meublog\/programacao\/guia-definitivo-valores-aleatorios-c\/\" target=\"_blank\" rel=\"noreferrer noopener\">guia sobre gera\u00e7\u00e3o de valores aleat\u00f3rios em C<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqui eu trago um algoritmo que simula v\u00e1rias &#8220;jogadas&#8221; na escolha das portas para comprova\u00e7\u00e3o dos resultados. O algoritmo utiliza a gera\u00e7\u00e3o de valores aleat\u00f3rios e contadores para calcular a quantidade de vit\u00f3rias. O c\u00f3digo a seguir \u00e9 uma primeira parte relacionada com o problema, apenas permitindo que o jogador escolha uma porta e n\u00e3o fa\u00e7a a troca de porta. Como resultado da execu\u00e7\u00e3o desse c\u00f3digo \u00e9 esperado uma taxa de vit\u00f3rias em torno de 33%, ou seja, vit\u00f3ria em 1\/3 (um ter\u00e7o) das jogadas.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">#include &lt;stdio.h&gt;\n#include &lt;stdlib.h&gt;\n#include &lt;time.h&gt;\n\n#define TOTAL 3\n\nint main() {\n    srand(time(NULL));\n    int porta, escolha, revelada, jogadas, vitorias=0;\n\n    for (jogadas=0; jogadas&lt;TOTAL; jogadas++) {\n        porta = rand()%3;\n        escolha = rand()%3;\n        printf(\"Escolheu %i e era %i. \", escolha, porta);\n\n        if (porta == escolha) {\n            printf(\"Ganhou!\\n\");\n            vitorias++;\n        } else {\n            printf(\"Perdeu!\\n\");\n        }\n    }\n    printf(\"\\nGanhou %i e perdeu %i. Proporcao %i%%\", vitorias, TOTAL-vitorias, vitorias*100\/TOTAL);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">O c\u00f3digo abaixo adiciona o restante dos elementos do problema, revelando uma porta e fazendo o jogador trocar a porta escolhida inicialmente. A execu\u00e7\u00e3o desse c\u00f3digo gerar\u00e1 resultados em torno de 66% no n\u00famero de vit\u00f3rias.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">#include &lt;stdio.h&gt;\n#include &lt;stdlib.h&gt;\n#include &lt;time.h&gt;\n\n#define TOTAL 3000\n\nint main() {\n    srand(time(NULL));\n    int porta, escolha, revelada, jogadas, vitorias=0;\n\n    for (jogadas=0; jogadas&lt;TOTAL; jogadas++) {\n        porta = rand()%3;\n        escolha = rand()%3;\n        printf(\"Escolheu %i e era %i\\n\", escolha, porta);\n\n        \/\/escolher porta para revelar\n        if (porta != 0 &amp;&amp; escolha != 0) { revelada = 0; }\n        if (porta != 1 &amp;&amp; escolha != 1) { revelada = 1; }\n        if (porta != 2 &amp;&amp; escolha != 2) { revelada = 2; }\n        printf(\"Porta revelada: %i\\n\", revelada);\n\n        \/\/sempre trocar a porta\n        if (revelada == 0) {\n            if (escolha == 1) { escolha = 2; } else { escolha = 1; }\n        } else if (revelada == 1) {\n            if (escolha == 0) { escolha = 2; } else { escolha = 0; }\n        } else {\n            if (escolha == 0) { escolha = 1; } else { escolha = 0; }\n        }\n        printf(\"Porta trocada para %i\\n\", escolha);\n\n        if (porta == escolha) {\n            printf(\"Ganhou!\\n\\n\");\n            vitorias++;\n        } else {\n            printf(\"Perdeu!\\n\\n\");\n        }\n    }\n    printf(\"\\nGanhou %i e perdeu %i. Proporcao %i%%\", vitorias, TOTAL-vitorias, vitorias*100\/TOTAL);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O problema de Monty Hall \u00e9 um problema matem\u00e1tico que envolve a probabilidade de ser bem sucedido na escolha de uma porta que possui um pr\u00eamio. Para saber mais sobre esse problema, recomendo a leitura de https:\/\/pt.wikipedia.org\/wiki\/Problema_de_Monty_Hall. Eu fiz o v\u00eddeo a seguir para falar sobre o problema de Monty Hall e o algoritmo que [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[3],"tags":[65,96],"class_list":["post-1387","post","type-post","status-publish","format-standard","hentry","category-c","tag-aleatoriedade","tag-matematica"],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/1387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/comments?post=1387"}],"version-history":[{"count":8,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/1387\/revisions"}],"predecessor-version":[{"id":1442,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/1387\/revisions\/1442"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/media?parent=1387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/categories?post=1387"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/tags?post=1387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}