É fácil gerar uma moeda justa usando uma moeda injusta, mas o inverso é mais difícil de realizar.
Seu programa receberá um número X (entre 0 e 1, inclusive) como entrada. A entrada não deve simplesmente ser codificada como um número no meio do código-fonte. Ele deve retornar um único dígito: a 1
com uma probabilidade de X e um 0
caso contrário.
Seu programa só pode usar uma forma de gerador de números aleatórios no código-fonte: int(rand(2))
(ou equivalente), que retorna zero ou um com probabilidade igual. Você pode incluir ou acessar esta função quantas vezes desejar no seu código. Você também deve fornecer a função como parte do código.
Seu programa não tem permissão para usar outras funções geradoras de número aleatório ou fontes externas (como funções de data e hora) que possam funcionar como uma função geradora de número aleatório. Ele também não pode acessar nenhum arquivo externo ou passar o trabalho para programas externos.
Este é o código de golfe, a resposta mais curta ganha.