Kodumaro :: Paradoxo de Monty Hall, parte Ⅱ

Publicado em 22 de Maio, 2016
As sombras da programação.
Erlang

Já temos o mestre de cerimônias, que fizemos no artigo anterior, agora precisamos de um convidado para escolher qual porta abrir.

Vamos começar com um cabeçalho bastante simples:

-module(mh_guest).
-export([choose/0, change/2]).

-include("mh.hrl").

-spec choose() -> door().
-spec change(Original :: door(), Alternative :: door()) -> door().

A função para escolher a porta:

choose() -> lists:nth(random:uniform(3), [a, b, c]).

E a função para mudar de porta:

-ifdef(change).
change(_Original, Alternative) -> Alternative.
-else.
change(Original, _Alternative) -> Original.
-endif.

Com isso, a função change/2 sempre retornará a porta originalmente escolhida, a menos que o arquivo mh_guest.erl seja compilado com a flag -Dchange.

E já temos como simular o convidado!

Arquivos para baixar

Próximos passos

No último artigo colocaremos tudo junto, executando diversas vezes para calcular quantas vezes o convidado ganha o carro.

Erlang | Funcional | Lógica