(1) Five people enter the elevator on the first floor of a 10-floor building. Each of them chooses a floor to leave the elevator at random, and each floor is equally likely to be chosen, independently of all the others. Set up a box model first.
# solution to (a) print( 1 - (8/9)**5 ) # 0.4450710426933565
# solution to (b) print( (8/9)**5 + 5 * (1/9) * (8/9)**4 ) # 0.9017595556232958
# solution to (c) print( (1/9)**5 * 9 ) # 0.00015241579027587253
# 2023-05-04 # number of floors nflr = 9 xoutcomes = [ (x1, x2, x3, x4, x5) for x1 in range(1, nflr + 1) for x2 in range(1, nflr + 1) for x3 in range(1, nflr + 1) for x4 in range(1, nflr + 1) for x5 in range(1, nflr + 1) ] print(len(xoutcomes)) # 59049 print(9**5 == 59049) # True def f_has_floor(xlist, xfr): """list of all outcomes that contains floor xfr""" return filter(lambda x: xfr in x, xlist) def f_has_no_floor(xlist, xfr): """list of all outcomes that does not contains floor xfr""" return filter(lambda x: xfr not in x, xlist) def f_occur(xx): """tuple xx to hash. return a hash. key is floor, value is num of occurrence. eg (3,4,2,3) return {3: 2, 4: 1, 2: 1} """ xh = {} for v in xx: if v in xh: xh[v] = xh[v] + 1 else: xh[v] = 1 return xh # HHHH------------------------------ # print( "nobody picked floor 2" ) # xx= list (f_has_no_floor(xoutcomes, 2)) # for v in xx: print( v) # print(len (xx) ) # # 32768 # print( 1 - len (xx)/ len(xoutcomes) ) # # 0.4450710426933564 # HHHH------------------------------ # def xfilterF(xx, xflr): # """xx is tuple. xflr is a floor number. return true if 0 or 1 picked xflor""" # xh = f_occur(xx) # if (xflr in xh): # # return (xh[xflr] == 0) # return (xh[xflr] == 1) or (xh[xflr] == 0) # else: # return True # print( ) # print( "0 or 1 person picked floor 3" ) # xx = list(filter( lambda x: xfilterF(x,3) , xoutcomes)) # for v in xx: print( v) # print( len (xx) ) # # 53248 # print( len (xx)/ len(xoutcomes) ) # # 0.9017595556232959 # HHHH------------------------------ def xfilf2(xx): """return true is all entry in tuple xx is same""" xh = f_occur(xx) return len(xh) == 1 print() print("all picked same floor") xx = list(filter(xfilf2, xoutcomes)) for v in xx: print(v) # all picked same floor # (1, 1, 1, 1, 1) # (2, 2, 2, 2, 2) # (3, 3, 3, 3, 3) # (4, 4, 4, 4, 4) # (5, 5, 5, 5, 5) # (6, 6, 6, 6, 6) # (7, 7, 7, 7, 7) # (8, 8, 8, 8, 8) # (9, 9, 9, 9, 9) print("length is", len(xx)) # length is 9 print(len(xx) / len(xoutcomes)) # 0.00015241579027587258 # for v in xoutcomes: print( v) # (1, 1, 1, 1, 1) # (1, 1, 1, 1, 2) # (1, 1, 1, 1, 3) # ...