import random
# for readability
HEADS = 0
TAILS = 1
# just defined to get input
yes = 1
no = 0
# determine how many iterations
n = input ( "How many samples do you wish to compute?: " )
# should we generate a p value for the coin every iteration?
generate_p_every_iteration = input ( 'Should we generate p every iteration? (yes/no): ' )
# if we should...
if not generate_p_every_iteration:
p = random .random ( )
print "probability of getting heads is:" , p
correctGuesses = 0
wrongGuesses = 0
for i in range ( 0 , n) :
if generate_p_every_iteration:
p = random .random ( )
# the choice for either heads
choice = random .randint ( HEADS, TAILS)
# actual coin flip
coinFlip = random .random ( )
# if we get a heads
if coinFlip < p:
# if we guessed heads
if choice == HEADS:
# then we guessed correctly
correctGuesses += 1
else :
# otherwise, we guessed wrong
wrongGuesses += + 1
# otherwise if we got a tails
else :
# if we guessed tails
if choice == TAILS:
# then we guessed correctly
correctGuesses += 1
else :
# otherwise we got the guess wrong
wrongGuesses += 1
percentageCorrect = float ( correctGuesses) / n
print "correct guesses:" , correctGuesses, "(" + str ( percentageCorrect) + ")"
print "wrong guesses:" , wrongGuesses, "(" + str ( 1 - percentageCorrect) + ")"
aW1wb3J0IHJhbmRvbQoKIyBmb3IgcmVhZGFiaWxpdHkgCkhFQURTID0gMApUQUlMUyA9IDEKCiMganVzdCBkZWZpbmVkIHRvIGdldCBpbnB1dAp5ZXMgPSAxCm5vID0gMCAKCiMgZGV0ZXJtaW5lIGhvdyBtYW55IGl0ZXJhdGlvbnMKbiA9IGlucHV0KCJIb3cgbWFueSBzYW1wbGVzIGRvIHlvdSB3aXNoIHRvIGNvbXB1dGU/OiAiKQojIHNob3VsZCB3ZSBnZW5lcmF0ZSBhIHAgdmFsdWUgZm9yIHRoZSBjb2luIGV2ZXJ5IGl0ZXJhdGlvbj8KZ2VuZXJhdGVfcF9ldmVyeV9pdGVyYXRpb24gPSBpbnB1dCgnU2hvdWxkIHdlIGdlbmVyYXRlIHAgZXZlcnkgaXRlcmF0aW9uPyAoeWVzL25vKTogJykKCiMgaWYgd2Ugc2hvdWxkLi4uCmlmIG5vdCBnZW5lcmF0ZV9wX2V2ZXJ5X2l0ZXJhdGlvbjoKICAgIHAgPSByYW5kb20ucmFuZG9tKCkKICAgIHByaW50ICJwcm9iYWJpbGl0eSBvZiBnZXR0aW5nIGhlYWRzIGlzOiIsIHAKCmNvcnJlY3RHdWVzc2VzID0gMAp3cm9uZ0d1ZXNzZXMgPSAwCgpmb3IgaSBpbiByYW5nZSgwLCBuKToKCiAgICBpZiBnZW5lcmF0ZV9wX2V2ZXJ5X2l0ZXJhdGlvbjoKICAgICAgICBwID0gcmFuZG9tLnJhbmRvbSgpCgogICAgIyB0aGUgY2hvaWNlIGZvciBlaXRoZXIgaGVhZHMKICAgIGNob2ljZSA9IHJhbmRvbS5yYW5kaW50KEhFQURTLCBUQUlMUykKCiAgICAjIGFjdHVhbCBjb2luIGZsaXAKICAgIGNvaW5GbGlwID0gcmFuZG9tLnJhbmRvbSgpCgogICAgIyBpZiB3ZSBnZXQgYSBoZWFkcwogICAgaWYgY29pbkZsaXAgPCBwOgogICAgICAgICMgaWYgd2UgZ3Vlc3NlZCBoZWFkcwogICAgICAgIGlmIGNob2ljZSA9PSBIRUFEUzoKICAgICAgICAgICAgIyB0aGVuIHdlIGd1ZXNzZWQgY29ycmVjdGx5CiAgICAgICAgICAgIGNvcnJlY3RHdWVzc2VzICs9IDEKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIG90aGVyd2lzZSwgd2UgZ3Vlc3NlZCB3cm9uZwogICAgICAgICAgICB3cm9uZ0d1ZXNzZXMgKz0gKyAxCgogICAgIyBvdGhlcndpc2UgaWYgd2UgZ290IGEgdGFpbHMKICAgIGVsc2U6CiAgICAgICAgIyBpZiB3ZSBndWVzc2VkIHRhaWxzCiAgICAgICAgaWYgY2hvaWNlID09IFRBSUxTOgogICAgICAgICAgICAjIHRoZW4gd2UgZ3Vlc3NlZCBjb3JyZWN0bHkKICAgICAgICAgICAgY29ycmVjdEd1ZXNzZXMgKz0gMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgb3RoZXJ3aXNlIHdlIGdvdCB0aGUgZ3Vlc3Mgd3JvbmcKICAgICAgICAgICAgd3JvbmdHdWVzc2VzICs9IDEKCgpwZXJjZW50YWdlQ29ycmVjdCA9IGZsb2F0KGNvcnJlY3RHdWVzc2VzKSAvIG4KcHJpbnQgImNvcnJlY3QgZ3Vlc3NlczoiLCBjb3JyZWN0R3Vlc3NlcywgIigiICsgc3RyKHBlcmNlbnRhZ2VDb3JyZWN0KSArICIpIgpwcmludCAid3JvbmcgZ3Vlc3NlczoiLCB3cm9uZ0d1ZXNzZXMsICIoIiArIHN0cigxIC0gcGVyY2VudGFnZUNvcnJlY3QpICsgIiki