2' NAME--BANKSIM 4' 6' DESCRIPTION 7' THIS PROGRAM WILL SIMULATE ONE YEAR'S ACTIVITIES OF A SMALL 8' BANK USING PROBABILITIES FOR WITHDRAWALS AND DEPOSITS. IT 9' ASSUMES THESE WITHDRAWALS AND DEPOSITS ARE NORMALLY DISTRIBUTED. 10' THIS BANK WILL BE OPEN 20 DAYS AMONTH, WITH INTEREST COMPUTED 11' QUARTERLY ON THE MINIMUM BALANCE; THIS PROGRAM WILL PRODUCE 12' MONTHLY, QUARTERLY, AND YEARLY STATEMENTS. 14' 16' SOURCE--REVISED 8/8/69 BY J. ROKUS 18' 20' INSTRUCTIONS 21' THERE IS SAMPLE DATA IN LINES 3000-3004. IF YOU WISH TO USE 22' YOUR OWN BEGINNING BALANCES, INSERT THEM INTO THESE DATA 23' STATEMENTS. BE SURE TO INDICATE HOW MANY CUSTOMERS YOU ARE 24' USING WHEN ASKED DURING THE RUN. TYPE 1 WHEN THE COMPUTER 25' ASKS YOU WHICH TYPE OF DATA YOU WISH TO USE. 26' THE ACTUAL SIMULATION BEGINS IN LINE 540. 28' 30' THIS PROGRAM WAS WRITTEN FOR STUDENT USE AT AMOS TUCK SCHOOL 32' OF HANOVER, N.H. WHICH DOES NOT ASSUME RESPONSIBILITY FOR ITS 34' ACCURACY. 40' 50' * * * * * * * * * * MAIN PROGRAM * * * * * * * * * * * * * * 60' 91 PRINT"IN THIS PROGRAM YOU HAVE YOUR CHOICE OF THE TYPE OF DATA TO USE." 92 PRINT"BY ENTERING THE NUMBER 1 ,THE COMPUTER WILL BEGIN ALL" 93 PRINT"BALANCES AT $100. IN THIS MANNER THE USER CAN SEE THE" 94 PRINT"EFFECTS MUCH EASIER ON THE ACCOUNT BALANCES FROM MONTH TO MONTH." 95 PRINT 96 PRINT"BY ENTERING THE NUMBER 2 , THE COMPUTER WILL SELECT LARGER" 97 PRINT"RANDOM NUMBERS FOR BEGINNING BALANCES." 98 PRINT 99 PRINT"WHICH METHOD DO YOU WANT TO USE"; 100 INPUT Z 101 PRINT 110 PRINT"HOW MANY CUSTOMERS DO YOU WISH TO USE IN THIS SIMULATION(LIMIT--" 120 PRINT "--250--FOR STORAGE PURPOSES."; 130 INPUT N 140 IF N<=250 THEN 170 150 PRINT"TOO MANY CUSTOMERS, TRY AGAIN." 160 GO TO 110 170 PRINT 180 PRINT "WHAT IS THE YEARLY INTEREST OF THIS BANK (PERCENTAGE FORMAT)"; 190 INPUT R 200 LET R=R/100 230 PRINT 240 PRINT"WHAT IS THE PROBABILITY OF A CUSTOMER ENTERING THE BANK DURING" 250 PRINT"ONE MONTH? THE BANK IS OPEN 20 DAYS PER MONTH.(E.G.,2 DAYS OUT" 260 PRINT"OF 20 = .10 PROBABILITY)"; 270 INPUT E 280 IF E <= 1 GO TO 310 290 PRINT"PROBABILITY NOT ENTERED CORRECTLY; TRY AGAIN." 300 GO TO 240 310 PRINT 320 PRINT"WHAT IS THE MEAN TRANSACTION FOR EACH PERSON ENTERING--IN" 330 PRINT"DOLLARS--ASSUMING ALL DEPOSITS AND WITHDRAWALS HAVE THE SAME" 340 PRINT"MEAN"; 350 INPUT M 360 PRINT 370 PRINT"WHAT IS THE STANDARD DEVIATION--IN DOLLARS"; 380 INPUT S 390 PRINT 400 PRINT"WHAT IS THE PROBABILITY THAT, WHEN A CUSTOMER ENTERS THE " 410 PRINT "BANK, HE WILL WITHDRAW MONEY"; 420 INPUT T 430 IF T <=.99 GO TO 460 440 PRINT"YOU HAVE ENTERED THE PROBABILITY INCORRECTLY; TRY AGAIN." 450 GO TO 400 460 PRINT 470 PRINT 480 PRINT"**PROBLEM:TO SIMULATE BANK ACTIVITIES USING";N;"CUSTOMERS," 490 PRINT"WITH THE BANK HAVING A";R;"YEARLY RATE." 500 PRINT"P(WITHDRAWAL/ENTRY INTO BANK) IS";E;"WITH THE MEAN TRANSACTION" 510 PRINT"BEING $";M;"AND THE STANDARD DEVIATION BEING $";S 520 PRINT 530 PRINT 535 REM THE SIMULATION PROCEDURE ACTUALLY BEGINS HERE...... 540 DIM A(250),M(250),Z(250) 550 LET P=Q=0 560 DEF FNN(M,S)=COS(6.28138*RND)*S*SQR(-2*LOG(RND))+M 570 FOR I = 1 TO N 580 IF Z=1 THEN 610 590 LET A(I)=RND*1000 600 GO TO 620 610 READ A(I) 620 LET M(I)=A(I) 630 NEXT I 640 PRINT "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * " 650 PRINT 660 PRINT 670 PRINTTAB(10);"THE NUMBERS TO BE USED AS BEGINNING BALANCES FOR THE" 680 PRINTTAB(30);"ACCOUNTS ARE" 690 PRINT 700 PRINT 710 PRINT"CUSTOMER";TAB(16);"BALANCE";TAB(43);"CUSTOMER";TAB(59);"BALANCE" 720 FOR I = 1 TO INT(N/2+.5) 725 LET X1=A(I+(INT(N/2+.5))) 726 LET V=FNF(A(I),10,2) 727 CHANGE V TO V$ 730 PRINT I;TAB(12),V$," ",I+INT(N/2+.5); 733 LET V=FNF(X1,10,2) 734 CHANGE V TO V$ 735 PRINT TAB(55);V$ 740 LET Q=Q+A(I)+A(I+(INT(N/2+.5))) 750 NEXT I 780 PRINT 788 LET V=FNF(Q,10,2) 789 CHANGE V TO V$ 790 PRINT "TOTAL BEGINNING BALANCES";V$ 800 PRINT 810 FOR C = 1 TO 240 'C IS THE NUMBER OF DAYS THE BANK IS OPEN 820 GO TO 920 830 IF C/60 = INT(C/60) THEN 1070 'DETERMINING IF IT IS A QUARTER OR 840 IF C/20 = INT(C/20) THEN 1170 'A MONTH 850 NEXT C 860 PRINTTAB(15);"THE FINAL ACCOUNT BALANCES FOR THE YEAR ARE" 870 PRINT 880 PRINT 890 PRINT"CUSTOMER";TAB(16);"BALANCE";TAB(43);"CUSTOMER";TAB(59);"BALANCE" 900 GOSUB 1210 910 STOP 920 FOR I = 1 TO N 930 IF RND<=E THEN 960 931 REM THE COMPUTER IS GENERATING RANDOM NUMBERS AND CHECKING THEM 932 REM AGAINST THE VALUE OF E--THE PROBABILITY OF A CUSTOMER 933 REM ENTERING THE BANK. IF HE DID ENTER(IF THE SELECTED VALUE 934 REM IS LESS THAN E), THE COMPUTER THEN DETERMINES IF THE PERSON 935 REM WITHDREW ANY MONEY. IT DOES THIS IN THE SAME MANNER. 936 REM THE COMPUTER SELECTS A RANDOM NUMBER AND COMPARES IT 937 REM WITH T--THE P(WITHDRAW/ENTER THE BANK). 940 NEXT I 950 GO TO 830 960 IF RND<= T THEN 1000 970 LET D = FNN(M,S) 980 LET A(I)=A(I)+D 990 GO TO 940 1000 LET W = FNN(M,S) 1010 LET A(I)=A(I)-W 'SUBTRACTING THE WITHDRAWAL FROM THE BALANCE. 1020 IF A(I)>0 THEN 1040 1021 REM IF THE WITHDRAWAL IS LARGER THAN THE BALANCE, THE PERSON 1022 REM WILL ONLY WITHDRAWAL THE MONEY HE HAS IN HIS ACCOUNT. 1023 REM HIS ACCOUNT WILL THEN BE ZERO. 1030 LET A(I)= 0 1040 IF A(I)>M(I) THEN 940 1050 LET M(I)=A(I) 1060 GO TO 940 1070 PRINTTAB(31);"QUARTER";C/60 1075 PRINT 1080 PRINT"CUSTOMER";TAB(16);"BALANCE";TAB(30);"INTEREST" 1090 FOR I = 1 TO N 1100 LET Z(I)=R/4*M(I) 1101 REM THE INTEREST WAS JUST CALCULATED. 1110 LET P = P + Z(I) 1120 LET A(I)=A(I)+Z(I) 1130 LET M(I)=A(I) 1140 NEXT I 1150 GOSUB 1340 1160 GO TO 850 1170 PRINTTAB(31);"MONTH";C/20 1175 PRINT 1180 PRINT"CUSTOMER";TAB(16);"BALANCE";TAB(43);"CUSTOMER";TAB(59);"BALANCE" 1190 GOSUB 1210 1200 GO TO 850 1210 LET A5 = 0 1220 FOR I = 1 TO INT(N/2+.5) 1230 LET A5=A5+A(I+(INT(N/2+.5)))+A(I) 1233 LET X5=INT(100*(A(I)+.005))/100 1236 LET X6=INT(100*(A(I+(INT(N/2+.5)))+.005))/100 1238 LET V=FNF(X5,10,2) 1239 CHANGE V TO V$ 1240 PRINT I;TAB(12);V$," ", 1250 PRINT I+(INT(N/2+.5)); 1253 LET V=FNF(X6,10,2) 1254 CHANGE V TO V$ 1255 PRINT TAB(55);V$ 1260 NEXT I 1290 PRINT 1298 LET V=FNF(A5,10,2) 1299 CHANGE V TO V$ 1300 PRINT "TOTAL";V$ 1310 PRINT 1320 PRINT 1330 RETURN 1340 LET A6 = 0 1350 FOR I = 1 TO N 1360 LET A6=A6+A(I) 1365 LET X3=INT(100*(A(I)+.005))/100 1368 LET V=FNF(X3,10,2) 1369 CHANGE V TO V$ 1370 PRINT I;TAB(12);V$; 1373 LET V=FNF(Z(I),10,2) 1374 CHANGE V TO V$ 1375 PRINT TAB(26);V$ 1380 NEXT I 1390 PRINT 1398 LET V=FNF(A6,10,2) 1399 CHANGE V TO V$ 1400 PRINT "TOTAL IN BANK ";V$ 1408 LET V=FNF(P,10,2) 1409 CHANGE V TO V$ 1410 PRINT "TOTAL CUMULATIVE INTEREST";V$ 1420 PRINT 1430 PRINT 1440 RETURN 2000 DEF FNF(X9,W9,D9) 2010 DIM P(25) 2020 LET P9=INT(ABS(X9)*10^D9+.5) 2030 IF P9<10^(W9-1) THEN 2060 2040 LET FNF=X9 2050 GOTO 2280 2060 FOR P8=W9 TO W9-D9+1 STEP -1 2070 LET P(P8)=P9-10*INT(P9/10)+48 2080 IF P(P8)<58 THEN 2100 2090 LET P(P8)=0 2100 LET P9=INT(P9/10) 2110 NEXT P8 2120 LET P(W9-D9)=46 2130 FOR P8=W9-D9-1 TO 1 STEP -1 2140 LET P(P8)=P9-10*INT(P9/10)+48 2150 IF P(P8)<58 THEN 2170 2160 LET P(P8)=0 2170 LET P9=INT(P9/10) 2180 IF P9=0 THEN 2200 2190 NEXT P8 2200 IF X9>=0 THEN 2230 2210 LET P(P8-1)=45 2220 LET P8=P8-1 2230 FOR P8=P8-1 TO 1 STEP -1 2240 LET P(P8)=32 2250 NEXT P8 2260 LET P(0)=W9 2270 LET FNF=P 2280 FNEND 3000 DATA 100,100,100,100,100,100,100,100,100,100,100,100,100,100 3001 DATA 100,100,100,100,100,100,100,100,100,100,100,100,100,100 3002 DATA 100,100,100,100,100,100,100,100,100,100,100,100,100,100 3003 DATA 100,100,100,100,100,100,100,100 9999 END