Did I read somewhere that this technique is actually used to gather survey data where the subject may have reason to lie? They can answer yes but it remains plausible that it was because of two coin flips coming up heads so they are not individually implicated. When you aggregate the data over many subjects, however, you have a better idea of how many actual cheaters there were than if you asked directly.
Anyway, here is the code below: http://jsfiddle.net/nQ3Gu/
var runs = 1000,
honest_admissions = 0,
automatic_admissions = 0;
function flip() {
return Math.random() < 0.5 ? 'h' : 't';
}
for (var i = 0; i < runs; i++) {
if (flip() == 't') {
honest_admissions++;
} else if (flip() == 'h') {
automatic_admissions++;
}
}
document.write('The "yes" is honest ' + honest_admissions / (honest_admissions + automatic_admissions) + ' of the time.')
2/3 of yeses are honest and 1/3 didn't have to answer the question!