10 rem 100 prisoners 20 rem set arrays 30 rem dr = drawers containing card values 40 rem ig = a list of numbers 1 through 100, shuffled to become the 41 rem guess sequence for each inmate - method 1 50 dim dr(100),ig(100) 55 rem initialize drawers with own card in each drawer 60 for i=1 to 100:dr(i)=i:next 1000 print chr$(147);"how many trials for each method";:input tt 1010 for m=1 to 2:su(m)=0:fa(m)=0 1015 for tn=1 to tt 1020 on m gosub 2000,3000 1025 rem ip = number of inmates who passed 1030 if ip=100 then su(m)=su(m)+1 1040 if ip<100 then fa(m)=fa(m)+1 1045 next tn 1055 next m 1060 print chr$(147);"Results:":print 1070 print "Out of";tt;"trials, the results are" 1071 print "as follows...":print 1072 print "1. Random Guessing:" 1073 print " ";su(1);"successes" 1074 print " ";fa(1);"failures" 1075 print " ";su(1)/tn;"{left-crsr}% success rate.":print 1077 print "2. Chained Number Picking:" 1078 print " ";su(2);"successes" 1079 print " ";fa(2);"failures" 1080 print " ";(su(2)/tn)*100;"{left-crsr}% success rate.":print 1100 print:print "Again?" 1110 get k$:if k$="" then 1110 1120 if k$="y" then 1000 1500 end 2000 rem random guessing method 2005 for x=1 to 100:ig(x)=x:next:ip=0:gosub 4000 2007 for i=1 to 100 2010 for x=1 to 100:t=ig(x):np=int(rnd(1)*100)+1:ig(x)=ig(np):ig(np)=t:next 2015 for g=1 to 50 2020 if dr(ig(g))=i then ip=ip+1:next i:return 2025 next g 2030 return 3000 rem chained method 3005 ip=0:gosub 4000 3007 rem iterate through each inmate 3010 fori=1to100 3015 ng=i:forg=1to50 3020 cd=dr(ng) 3025 ifcd=ithenip=ip+1:nexti:return 3030 ifcd<>ithenng=cd 3035 nextg:return 4000 rem shuffle the drawer cards randomly 4010 x=rnd(-ti) 4020 for i=1 to 100 4030 r=int(rnd(1)*100)+1:t=dr(i):dr(i)=dr(r):dr(r)=t:next 4040 return