def distance (this_dot, that_dot):
term1 = (this_dot[0] - that_dot[0])**2
term2 = (this_dot[1] - that_dot[1])**2
return sqrt(term1 + term2)
def dot_in_disk_area(rand_dot, disk_dot, disk_radius):
if distance(rand_dot, disk_dot) <= disk_radius:
return True
else:
return False
def dot_in_square_area(rand_dot, square_length):
test1 = rand_dot[0] in range(square_length)
test2 = rand_dot[1] in range(square_length)
return test1 and test2
space_width = 1000
space_height = 1000
disk_center_dot = [space_width / 2, space_height/2]
disk_radius = 100
square_side_length = 100
total_simulation = 10000
total_in_disk_area = 0
total_in_square_area = 0
for s in range(total_simulation):
dot_x = randrange(space_width)
dot_y = randrange(space_height)
rand_dot = [dot_x, dot_y]
if dot_in_disk_area(rand_dot, disk_center_dot, disk_radius):
total_in_disk_area += 1
if dot_in_square_area(rand_dot, square_side_length):
total_in_square_area += 1
print ('total_in_disk_area = %d' % total_in_disk_area)
print ('total_in_square_area = %d' % total_in_square_area)
math_square_area = square_side_length * square_side_length
math_disk_area = pi * disk_radius **2
print ('math_square_area = %f' % math_square_area)
print ('math_disk_area = %f' % math_disk_area)
mc_disk_area = total_in_disk_area / total_in_square_area * math_square_area
print ('mc_disk_area = %f' % mc_disk_area)
diff_percentage = (mc_disk_area - math_disk_area) / math_disk_area * 100
print ('diff_percentage = %f' %diff_percentage )
total_in_disk_area = 309
total_in_square_area = 91
math_square_area = 10000.000000
math_disk_area = 31415.926536
mc_disk_area = 33956.043956
diff_percentage = 8.085445
total_in_disk_area = 301
total_in_square_area = 96
math_square_area = 10000.000000
math_disk_area = 31415.926536
mc_disk_area = 31354.166667
diff_percentage = -0.196588
total_in_disk_area = 320
total_in_square_area = 86
math_square_area = 10000.000000
math_disk_area = 31415.926536
mc_disk_area = 37209.302326
diff_percentage = 18.440888