{"id":1448,"date":"2025-08-06T22:35:49","date_gmt":"2025-08-07T01:35:49","guid":{"rendered":"https:\/\/www.galirows.com.br\/meublog\/programacao\/?p=1448"},"modified":"2025-08-06T22:50:09","modified_gmt":"2025-08-07T01:50:09","slug":"explicacao-sobre-aleatoriedade-jogo-do-ultimato","status":"publish","type":"post","link":"http:\/\/www.galirows.com.br\/meublog\/programacao\/explicacao-sobre-aleatoriedade-jogo-do-ultimato\/","title":{"rendered":"Explica\u00e7\u00e3o sobre aleatoriedade \u2013 Jogo do Ultimato"},"content":{"rendered":"\n<p>O <strong>Jogo do Ultimato<\/strong> e o seu derivado, o <strong>Jogo do Ditador<\/strong>, s\u00e3o dois experimentos cl\u00e1ssicos da teoria dos jogos e da economia comportamental que revelam importantes facetas da natureza humana. Ambos os jogos envolvem a divis\u00e3o de uma quantia em dinheiro entre dois participantes, mas com uma diferen\u00e7a crucial em suas regras, o que leva a resultados e interpreta\u00e7\u00f5es distintas sobre o que motiva as decis\u00f5es das pessoas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">O Jogo do Ultimato<\/h3>\n\n\n\n<p>No Jogo do Ultimato, dois jogadores, que n\u00e3o se conhecem, t\u00eam a tarefa de dividir uma soma de dinheiro. O primeiro jogador, o &#8220;Proponente&#8221;, recebe a quantia e deve propor uma divis\u00e3o ao segundo jogador, o &#8220;Receptor&#8221;. O Receptor, por sua vez, tem duas op\u00e7\u00f5es: aceitar a oferta, e nesse caso o dinheiro \u00e9 dividido conforme a proposta, ou recus\u00e1-la, situa\u00e7\u00e3o em que ambos os jogadores n\u00e3o recebem nada.<\/p>\n\n\n\n<p><strong>A l\u00f3gica da teoria da escolha racional<\/strong> sugere que o Proponente, buscando maximizar seu pr\u00f3prio ganho, deveria oferecer a menor quantia poss\u00edvel acima de zero (por exemplo, se tiver 10 reais, dar 1 real para o Receptor e ficar com outros 9 reais). O Receptor, agindo de forma puramente racional, deveria aceitar qualquer oferta, por menor que seja, pois qualquer valor \u00e9 melhor do que zero.<\/p>\n\n\n\n<p><strong>Contudo, os resultados experimentais<\/strong> consistentemente desafiam essa previs\u00e3o. Na pr\u00e1tica, Proponentes geralmente oferecem divis\u00f5es mais equitativas, frequentemente entre 40% e 50% do total. Ofertas muito baixas, abaixo de 20% a 30%, s\u00e3o frequentemente rejeitadas pelos Receptores.<\/p>\n\n\n\n<p>Essa discrep\u00e2ncia evidencia que a tomada de decis\u00e3o humana n\u00e3o \u00e9 guiada apenas pelo interesse pr\u00f3prio. Fatores como o <strong>senso de justi\u00e7a<\/strong> e o <strong>medo da puni\u00e7\u00e3o<\/strong> (a rejei\u00e7\u00e3o da oferta) desempenham um papel crucial. Os Receptores preferem sair sem nada a aceitar uma oferta que consideram injusta, punindo assim o comportamento ego\u00edsta do Proponente. Por sua vez, os Proponentes, antecipando essa poss\u00edvel retalia\u00e7\u00e3o, tendem a fazer ofertas mais generosas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">O Jogo do Ditador<\/h3>\n\n\n\n<p>O Jogo do Ditador \u00e9 uma varia\u00e7\u00e3o simplificada do Jogo do Ultimato. A principal diferen\u00e7a \u00e9 a elimina\u00e7\u00e3o do poder de veto do segundo jogador. No Jogo do Ditador, o primeiro jogador, agora chamado de &#8220;Ditador&#8221;, decide como dividir a quantia de dinheiro, e o segundo jogador, o &#8220;Receptor&#8221;, n\u00e3o tem outra op\u00e7\u00e3o a n\u00e3o ser aceitar a divis\u00e3o proposta.<\/p>\n\n\n\n<p>O jogo do ditador n\u00e3o ser\u00e1 aproveitado nessa exemplifica\u00e7\u00e3o, ficando aqui descrita apenas por curiosidade.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Proposta de simula\u00e7\u00e3o do jogo do ultimato<\/h2>\n\n\n\n<p>Para a simula\u00e7\u00e3o, a escolha racional ser\u00e1 substitu\u00edda por uma probabilidade de aceitar a oferta. Se o Proponente oferecer uma divis\u00e3o de 50%-50%, o Receptor ir\u00e1 sempre aceitar a oferta. Se o Proponente oferecer uma divis\u00e3o de 100%-0%, o Receptor ir\u00e1 sempre rejeitar a oferta &#8211; convenhamos que n\u00e3o faz sentido no jogo o Proponente ofertar essa divis\u00e3o. As rela\u00e7\u00f5es intermedi\u00e1rias ter\u00e3o a probabilidade proporcionais no intervalo. Por exemplo, se o Proponente oferecer uma divis\u00e3o de 60%-40%, o Receptor ter\u00e1 uma probabilidade de 80% em aceitar a oferta.<\/p>\n\n\n\n<p>Para a simula\u00e7\u00e3o, vamos considerar que o Proponente tem R$ 100,00 para distribuir. Ele ir\u00e1 sortear uma proposta de valor no intervalo entre 1% e 50% do valor (deixar para o Receptor um valor entre R$ 1,00 e R$ 50,00). O Receptor ter\u00e1 uma probabilidade de 2 vezes a porcentagem oferecida para aceitar a oferta. <\/p>\n\n\n\n<p>Ser\u00e1 mostrado ao final a quantidade de ofertas aceitas e recusadas e os valores acumulados do Proponente e do Receptor.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">import random\n\ndef simular_jogo_do_ultimato(num_simulacoes=1000):\n    \"\"\"\n    Argumentos:\n        num_simulacoes (int): O n\u00famero de vezes que a simula\u00e7\u00e3o ser\u00e1 executada.\n\n    Retorna:\n        dict: Um dicion\u00e1rio contendo os resultados da simula\u00e7\u00e3o.\n    \"\"\"\n    # Contadores para os resultados\n    ofertas_aceitas = 0\n    ofertas_recusadas = 0\n    total_proponente = 0.0\n    total_receptor = 0.0\n    valor_total_ofertado = 100.0\n\n    print(f\"--- Simula\u00e7\u00e3o do Jogo do Ultimato ({num_simulacoes} rodadas) ---\\n\")\n\n    # Loop principal da simula\u00e7\u00e3o\n    for i in range(num_simulacoes):\n        # 1. Proponente sorteia uma oferta entre R$ 1,00 e R$ 50,00\n        oferta_proponente = random.randint(1, 50)\n        \n        # 2. Calcular a probabilidade de aceita\u00e7\u00e3o do Receptor\n        # A probabilidade \u00e9 2x a porcentagem oferecida.\n        # Ex: oferta de R$25 (25%) -&gt; prob = 2 * 0.25 = 0.50 (50%)\n        percentual_ofertado = oferta_proponente \/ valor_total_ofertado\n        probabilidade_aceitacao = 2 * percentual_ofertado\n\n        # 3. Receptor decide se aceita ou n\u00e3o a oferta\n        # Sorteia um n\u00famero entre 0 e 1. Se for menor ou igual \u00e0 probabilidade, ele aceita.\n        if random.random() &lt;= probabilidade_aceitacao:\n            # Oferta ACEITA\n            ofertas_aceitas += 1\n            ganho_proponente = valor_total_ofertado - oferta_proponente\n            ganho_receptor = oferta_proponente\n            \n            total_proponente += ganho_proponente\n            total_receptor += ganho_receptor\n        else:\n            # Oferta RECUSADA\n            ofertas_recusadas += 1\n            # Ambos n\u00e3o ganham nada nesta rodada\n            ganho_proponente = 0\n            ganho_receptor = 0\n\n    # --- C\u00e1lculo dos resultados finais ---\n    \n    # Taxas de aceita\u00e7\u00e3o e recusa\n    taxa_aceitacao = (ofertas_aceitas \/ num_simulacoes) * 100\n    taxa_recusa = (ofertas_recusadas \/ num_simulacoes) * 100\n\n    # Ganhos m\u00e9dios por rodada\n    ganho_medio_proponente = total_proponente \/ num_simulacoes\n    ganho_medio_receptor = total_receptor \/ num_simulacoes\n    \n    # Ganhos m\u00e9dios por rodada bem-sucedida (quando a oferta \u00e9 aceita)\n    ganho_medio_proponente_sucesso = total_proponente \/ ofertas_aceitas if ofertas_aceitas &gt; 0 else 0\n    ganho_medio_receptor_sucesso = total_receptor \/ ofertas_aceitas if ofertas_aceitas &gt; 0 else 0\n\n\n    # Monta o dicion\u00e1rio de resultados\n    resultados = {\n        \"Total de Simula\u00e7\u00f5es\": num_simulacoes,\n        \"Ofertas Aceitas\": ofertas_aceitas,\n        \"Ofertas Recusadas\": ofertas_recusadas,\n        \"Taxa de Aceita\u00e7\u00e3o (%)\": f\"{taxa_aceitacao:.2f}%\",\n        \"Taxa de Recusa (%)\": f\"{taxa_recusa:.2f}%\",\n        \"Ganho Total do Proponente\": f\"R$ {total_proponente:.2f}\",\n        \"Ganho Total do Receptor\": f\"R$ {total_receptor:.2f}\",\n        \"Ganho M\u00e9dio por Rodada (Proponente)\": f\"R$ {ganho_medio_proponente:.2f}\",\n        \"Ganho M\u00e9dio por Rodada (Receptor)\": f\"R$ {ganho_medio_receptor:.2f}\",\n        \"Ganho M\u00e9dio por Oferta Aceita (Proponente)\": f\"R$ {ganho_medio_proponente_sucesso:.2f}\",\n        \"Ganho M\u00e9dio por Oferta Aceita (Receptor)\": f\"R$ {ganho_medio_receptor_sucesso:.2f}\",\n    }\n\n    return resultados\n\n# Executa a simula\u00e7\u00e3o e imprime os resultados\nif __name__ == \"__main__\":\n    resultados_finais = simular_jogo_do_ultimato(1000)\n    \n    for chave, valor in resultados_finais.items():\n        print(f\"{chave}: {valor}\")\n<\/code><\/pre>\n\n\n\n<p><a href=\"https:\/\/py3.codeskulptor.org\/#user310_ub0hdkX0QB_0.py\" data-type=\"link\" data-id=\"https:\/\/py3.codeskulptor.org\/#user310_ub0hdkX0QB_0.py\" target=\"_blank\" rel=\"noreferrer noopener\">Teste o c\u00f3digo aqui.<\/a><\/p>\n\n\n\n<p>Um exemplo da execu\u00e7\u00e3o do c\u00f3digo \u00e9 mostrado abaixo. A taxa de recusa deve ficar em torno de 50%, o que far\u00e1 que em torno de R$ 50.000,00 dos R$ 100.000,00 sejam &#8220;embolsados&#8221; pelos participantes (algo em torno de R$ 35.000,00 para o Proponente e R$ 15.000,00 para o Receptor).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">Total de Simula\u00e7\u00f5es: 1000\nOfertas Aceitas: 526\nOfertas Recusadas: 474\nTaxa de Aceita\u00e7\u00e3o (%): 52.60%\nTaxa de Recusa (%): 47.40%\nGanho Total do Proponente: R$ 35295.00\nGanho Total do Receptor: R$ 17305.00\nGanho M\u00e9dio por Rodada (Proponente): R$ 35.30\nGanho M\u00e9dio por Rodada (Receptor): R$ 17.30\nGanho M\u00e9dio por Oferta Aceita (Proponente): R$ 67.10\nGanho M\u00e9dio por Oferta Aceita (Receptor): R$ 32.90<\/code><\/pre>\n\n\n\n<p>Experimente agora melhor a distribui\u00e7\u00e3o de valores para o Receptor, ou seja, oferecer mais dinheiro para o Receptor. Aumentar o valor dado ao Receptor parece ir\u00e1 diminuir o total arrecadado pelo Proponente. Veja o que acontecer se em veze de propor a divis\u00e3o entre 1% e 50%, a propor\u00e7\u00e3o for entre 25% e 50% (\u00e9 preciso ajustar a linha 23 para o novo intervalo de valores). <\/p>\n\n\n\n<p>Trago a seguir a vers\u00e3o do c\u00f3digo em linguagem C.<\/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\nint main() {\n    \/\/ --- Configura\u00e7\u00e3o da Simula\u00e7\u00e3o ---\n    const int NUM_SIMULACOES = 1000;\n    const double VALOR_TOTAL_OFERTADO = 100.0;\n\n    \/\/ --- Contadores e Totais ---\n    int ofertas_aceitas = 0;\n    int ofertas_recusadas = 0;\n    double total_proponente = 0.0;\n    double total_receptor = 0.0;\n\n    \/\/ --- Inicializa\u00e7\u00e3o do Gerador de N\u00fameros Aleat\u00f3rios ---\n    \/\/ A fun\u00e7\u00e3o 'srand' inicializa o gerador de n\u00fameros aleat\u00f3rios com uma \"semente\".\n    \/\/ Usar 'time(NULL)' como semente garante que a sequ\u00eancia de n\u00fameros aleat\u00f3rios\n    \/\/ seja diferente a cada execu\u00e7\u00e3o do programa. Isso s\u00f3 precisa ser feito uma vez.\n    srand(time(NULL));\n\n    printf(\"--- Iniciando Simulacao do Jogo do Ultimato (%d rodadas) ---\\n\\n\", NUM_SIMULACOES);\n\n    \/\/ --- Loop Principal da Simula\u00e7\u00e3o ---\n    for (int i = 0; i &lt; NUM_SIMULACOES; i++) {\n        \/\/ 1. Proponente sorteia uma oferta entre 1 e 50\n        \/\/ rand() % 50 gera um n\u00famero de 0 a 49. Somamos 1 para obter o intervalo 1-50.\n        int oferta_proponente = (rand() % 50) + 1;\n\n        \/\/ 2. Calcular a probabilidade de aceita\u00e7\u00e3o do Receptor\n        double percentual_ofertado = (double)oferta_proponente \/ VALOR_TOTAL_OFERTADO;\n        double probabilidade_aceitacao = 2.0 * percentual_ofertado;\n\n        \/\/ 3. Receptor decide se aceita ou n\u00e3o a oferta\n        \/\/ Geramos um n\u00famero aleat\u00f3rio de ponto flutuante entre 0.0 e 1.0\n        double decisao_aleatoria = (double)rand() \/ RAND_MAX;\n\n        if (decisao_aleatoria &lt;= probabilidade_aceitacao) {\n            \/\/ Oferta ACEITA\n            ofertas_aceitas++;\n            total_proponente += VALOR_TOTAL_OFERTADO - oferta_proponente;\n            total_receptor += oferta_proponente;\n        } else {\n            \/\/ Oferta RECUSADA\n            ofertas_recusadas++;\n            \/\/ Ambos n\u00e3o ganham nada nesta rodada\n        }\n    }\n\n    \/\/ --- C\u00e1lculo e Exibi\u00e7\u00e3o dos Resultados Finais ---\n\n    \/\/ Taxas de aceita\u00e7\u00e3o e recusa\n    double taxa_aceitacao = ((double)ofertas_aceitas \/ NUM_SIMULACOES) * 100.0;\n    double taxa_recusa = ((double)ofertas_recusadas \/ NUM_SIMULACOES) * 100.0;\n\n    \/\/ Ganhos m\u00e9dios por rodada\n    double ganho_medio_proponente = total_proponente \/ NUM_SIMULACOES;\n    double ganho_medio_receptor = total_receptor \/ NUM_SIMULACOES;\n    \n    \/\/ Ganhos m\u00e9dios por rodada bem-sucedida (quando a oferta \u00e9 aceita)\n    double ganho_medio_proponente_sucesso = (ofertas_aceitas &gt; 0) ? total_proponente \/ ofertas_aceitas : 0;\n    double ganho_medio_receptor_sucesso = (ofertas_aceitas &gt; 0) ? total_receptor \/ ofertas_aceitas : 0;\n\n\n    printf(\"--- Resultados Finais ---\\n\");\n    printf(\"Total de Simulacoes: %d\\n\", NUM_SIMULACOES);\n    printf(\"Ofertas Aceitas: %d\\n\", ofertas_aceitas);\n    printf(\"Ofertas Recusadas: %d\\n\", ofertas_recusadas);\n    printf(\"Taxa de Aceitacao: %.2f%%\\n\", taxa_aceitacao); \/\/ %% para imprimir o caractere '%'\n    printf(\"Taxa de Recusa: %.2f%%\\n\", taxa_recusa);\n    printf(\"----------------------------------------\\n\");\n    printf(\"Ganho Total do Proponente: R$ %.2f\\n\", total_proponente);\n    printf(\"Ganho Total do Receptor: R$ %.2f\\n\", total_receptor);\n    printf(\"----------------------------------------\\n\");\n    printf(\"Ganho Medio por Rodada (Proponente): R$ %.2f\\n\", ganho_medio_proponente);\n    printf(\"Ganho Medio por Rodada (Receptor): R$ %.2f\\n\", ganho_medio_receptor);\n    printf(\"Ganho Medio por Oferta Aceita (Proponente): R$ %.2f\\n\", ganho_medio_proponente_sucesso);\n    printf(\"Ganho Medio por Oferta Aceita (Receptor): R$ %.2f\\n\", ganho_medio_receptor_sucesso);\n    printf(\"\\n--- Fim da Simulacao ---\\n\");\n\n    return 0; \/\/ Indica que o programa terminou com sucesso\n}<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O Jogo do Ultimato e o seu derivado, o Jogo do Ditador, s\u00e3o dois experimentos cl\u00e1ssicos da teoria dos jogos e da economia comportamental que revelam importantes facetas da natureza humana. Ambos os jogos envolvem a divis\u00e3o de uma quantia em dinheiro entre dois participantes, mas com uma diferen\u00e7a crucial em suas regras, o 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":[5],"tags":[],"class_list":["post-1448","post","type-post","status-publish","format-standard","hentry","category-python"],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/1448","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=1448"}],"version-history":[{"count":2,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/1448\/revisions"}],"predecessor-version":[{"id":1452,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/1448\/revisions\/1452"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/media?parent=1448"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/categories?post=1448"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/tags?post=1448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}