10  COM X[103,22],M[19,19],U[19,19],Q[20],V[20],P[78]
30  COM M$[60],N$[72]
40  COM N,K,N8,K8,N9,K9,Q9,Q7,Q5,Q4,Q3,Q2,Q1
45  COM I3,I4,U9,X$[20]
50  REM:2MAY74
60  REM:>RAND
150  DIM D$[10],B$[10]
152  GOTO 160
154  PRINT "WANT EXPLANATION ";
155  INPUT B$
156  IF B$[1,1]="N" THEN 160
157  Q[6]=45
158  Q[7]=160
159  REM:WILL CHAIN TO EXPLANATION PROG.
160  C1=0
200  GOTO Q9 OF 210,210,400
210  PRINT "WANT LIST OF SUBCOMMAND NAMES ";
220  INPUT B$
230  IF B$[1,1]="N" THEN 350
240  PRINT "DISTRIBUTION        COMMAND"
250  PRINT "------------        -------"
260  PRINT " CAUCHY               CAUC"
270  PRINT " CHI-SQUARE           CHIS"
280  PRINT " GAMMA-1              GAMM"
290  PRINT " LOG NORMAL           LOGN"
300  PRINT " NORMAL               NORM"
310  PRINT " UNIFORM              UNIF"
322  PRINT " AUTOREGRESSION       ARG1"
323  PRINT " AUTOREGRESSIVE-"
324  PRINT " INTEGRATED-"
325  PRINT " MOVING AVERAGE       ARMA"
339  PRINT " NONE OF ABOVE        NONE"
340  GOTO Q9 OF 350,350,400
350  PRINT LIN(1);"*WHICH DISTRIBUTION DO YOU WANT TO SAMPLE FROM ?";
360  ENTER 30,Q8,D$
370  PRINT 
380  IF Q8>0 THEN 470
390  GOTO 240
400  C1=C1+1
410  PRINT LIN(1);"*DIST = ";
420  ENTER 30,Q8,D$
430  PRINT 
440  IF Q8>0 THEN 470
450  IF C1=1 THEN 240
460  GOTO 350
470  IF D$[1,4]="CAUC" THEN 2000
480  IF D$[1,4]="CHIS" THEN 2500
490  IF D$[1,4]="GAMM" THEN 3000
500  IF D$[1,4]="LOGN" THEN 3500
510  IF D$[1,4]="NORM" THEN 4000
520  IF D$[1,4]="UNIF" THEN 4500
530  IF D$[1,4]="HELP" THEN 210
540  IF D$[1,4]="NONE" THEN 9998
542  IF D$[1,4]="ARG1" THEN 5000
544  IF D$[1,4]="ARMA" THEN 6000
550  REM
560  REM
570  REM
579  IF D$="?" THEN 210
580  PRINT "INVALID COMMAND"
590  GOTO 340
699  REM:DETERMINE COL. TO PLACE SAMPLE
700  IF Q[1]=0 THEN 764
704  PRINT '10"IDA DATA MATRIX NOW HAS:"'10" "N" ROWS"'10" "K" COLUMN(S)"
706  IF Q4=1 THEN 714
708  PRINT "BUT"'10"THE FIRST"Q4-1"ROWS"
710  PRINT "ARE UNDEFINED AND UNAVAILABLE FOR PLOTTING OR ANALYSIS"
712  PRINT "BECAUSE OF PREVIOUS USE OF 'DIFF' OR 'LAGG'."
714  N0=0
716  FOR I=1 TO N
718  IF X[I,K9+2]=0 THEN 730
720  N0=N0+1
722  NEXT I
724  REM: NO DELETED ROWS IN X MAT
730  GOTO Q9 OF 732,732,736
732  PRINT '10"WANT TO ERASE ALL DATA AND START OVER ";
734  GOTO 738
736  PRINT '10"ERASE ";
738  INPUT B$
740  IF B$[1,1]="N" THEN 768
742  IF P[63]=0 THEN 756
744  FOR I=1 TO N9+3
746  FOR J=1 TO K9+2
748  X[I,J]=0
750  NEXT J
752  NEXT I
754  GOTO 758
756  MAT X=ZER[N9+3,K9+2]
758  MAT Q=ZER
760  MAT M=ZER
762  Q3=Q4=P[65]=0
764  J=1
766  GOTO 910
768  IF N0=N THEN 776
770  PRINT "YOU MUST FIRST 'RECOUP' YOUR DELETED ROWS OR ERASE ALL DATA"
772  PRINT "BEFORE USING 'RAND'."
774  GOTO 9996
776  GOTO Q9 OF 778,778,784
778  PRINT "* IN WHICH COLUMN DO YOU WANT THE RANDOM"
780  PRINT "SAMPLE BE PLACED ?  GIVE NUMBER : ";
782  GOTO 786
784  PRINT "* COL. # TO PLACE SAMPLE : ";
786  ENTER 15,Q8,J
788  PRINT 
790  IF Q8>0 THEN 802
792  PRINT  USING 794;(K+1)
794  IMAGE "TO PLACE SAMPLE IN A NEW COLUMN, TYPE THE NUMBER : ",XDD
796  PRINT  USING 798;K
798  IMAGE#,"OTHERWISE,GIVE A NUMBER BETWEEN 1 AND",XDD,":"
800  GOTO 786
802  IF J <= (K+1) AND J<K9 THEN 910
804  PRINT "NUMBER GIVEN TOO LARGE"
806  GOTO 794
910  RETURN 
1000  REM: DETERMINE SAMPLE SIZE
1010  IF Q[1]#0 THEN 1160
1030  GOTO Q9 OF 1040,1040,1140
1040  PRINT "* SAMPLE SIZE (N) = ";
1050  ENTER 30,Q8,N
1060  PRINT 
1070  IF Q8>0 THEN 1100
1080  PRINT "N IS THE NUMBER OF ITEMS IN THE SAMPLE"
1090  GOTO 1040
1100  IF N <= N9 THEN 1160
1110  PRINT  USING 1120;N9
1120  IMAGE"N MUST BE LESS THAN OR EQUAL TO",XDDD
1122  PRINT "BUT YOU CAN USE 'RDIM' TO INCREASE THE MAX. SIZE TO 563."
1130  GOTO 1040
1140  PRINT "* N = ";
1150  GOTO 1050
1160  RETURN 
1500  REM : DETERMINE EITHER PARAMETER R OR DF
1510  D=1
1520  GOTO Q9 OF 1530,1530,1550
1530  PRINT "* VALUE OF PARAMETER R : ";
1540  GOTO 1580
1550  PRINT "* R = ";
1560  GOTO 1580
1570  D=2
1580  ENTER 30,Q8,R1
1590  PRINT 
1600  IF Q8>0 THEN 1700
1610  GOTO D OF 1620,1680
1620  PRINT "              R-1"
1630  PRINT "  F(T)=L*(L*T)   EXP(-L*T)/(R-1)!"
1640  PRINT "T>0, WHERE R IS A POSITIVE INTEGER < 50"
1650  PRINT "AND L IS A POSITIVE REAL NUMBER."
1660  PRINT "VALUE OF R IS : ";
1670  GOTO 1580
1680  PRINT "NO. OF DEGREES OF FREEDOM : ";
1690  GOTO 1580
1700  IF R1#INT(R1) THEN 1730
1710  IF R1<0 OR R1>50 THEN 1750
1720  GOTO 1770
1730  PRINT "VALUE MUST BE AN INTEGER"
1740  GOTO D OF 1660,1680
1750  PRINT "VALUE MUST BE BETWEEN 1 AND 50"
1760  GOTO D OF 1660,1680
1770  RETURN 
2000  REM:CAUCHY DISTRIBUTION
2010  GOSUB 700
2020  GOSUB 1000
2030  GOTO Q9 OF 2040,2040,2060
2040  PRINT "WHAT IS THE VALUE OF THE MEDIAN";
2050  GOTO 2070
2060  PRINT "MEDIAN = ";
2070  INPUT M1
2080  GOTO Q9 OF 2090,2090,2110
2090  PRINT "* VALUE FOR SCALE S = ";
2100  GOTO 2120
2110  PRINT "* SCALE = ";
2120  ENTER 30,Q8,S
2130  PRINT 
2140  IF Q8>0 THEN 2170
2150  PRINT "THE SCALE S IS SUCH THAT P(M-S<X<M+S) = 0.5"
2160  GOTO 2080
2170  FOR I=1 TO N
2180  Z=RND(0)
2190  X[I,J]=S*TAN(3.14159*Z-1.5708)+M1
2200  NEXT I
2210  GOTO 9000
2500  REM: CHI-SQUARE DISTRIBUTION
2510  GOSUB 700
2520  GOSUB 1000
2530  GOTO Q9 OF 2540,2540,2570
2540  PRINT "NO. OF DEGREES OF FREEDOM : ";
2550  GOSUB 1570
2560  GOTO 2590
2570  PRINT "D.F. = ";
2580  GOSUB 1570
2590  R2=R1
2600  L=.5
2610  IF (R2/2)#INT(R2/2) THEN 2720
2620  R1=R2/2
2630  REM : CHI-SQUARE WITH EVEN DF, OR GAMMA-1
2640  FOR I=1 TO N
2650  X[I,J]=0
2660  FOR I1=1 TO R1
2670  X[I,J]=X[I,J]-LOG(1-RND(0))/L
2680  NEXT I1
2690  NEXT I
2700  GOTO 9000
2710  REM : CHI-SQUARE, ODD DF
2720  FOR I=1 TO N
2730  X[I,J]=0
2740  FOR I1=1 TO R2
2750  Z1=RND(0)
2760  Z2=RND(0)
2770  Z=SQR(-2*LOG(Z1))*COS(6.28318*Z2)
2780  X[I,J]=X[I,J]+Z*Z
2790  NEXT I1
2800  NEXT I
2810  GOTO 9000
3000  REM : GAMMA-1 DISTRIBUTION
3010  GOSUB 700
3020  GOSUB 1000
3030  PRINT "VALUE OF LAMBDA ";
3040  INPUT L
3050  IF L>0 THEN 3080
3060  PRINT "LAMBDA MUST BE POSITIVE"
3070  GOTO 3030
3080  GOSUB 1500
3090  GOTO 2630
3500  REM : LOG NORMAL DISTRIBUTION
3510  GOSUB 700
3520  GOSUB 1000
3530  GOSUB 4050
3540  FOR I=1 TO N
3550  Z1=RND(0)
3560  Z2=RND(0)
3570  Z=SQR(-2*LOG(Z1))*COS(6.28318*Z2)
3580  X[I,J]=EXP(M+Z*S)
3590  NEXT I
3600  GOTO 9000
4000  REM : NORMAL DISTRIBUTION
4010  GOSUB 700
4020  GOSUB 1000
4030  GOSUB 4050
4040  GOTO 4220
4050  GOTO Q9 OF 4060,4060,4190
4060  PRINT "MEAN, STANDARD DEVIATION = ";
4070  INPUT M,S
4080  IF D$[1,4]#"LOGN" THEN 4150
4090  IF M <= 5 THEN 4150
4100  PRINT "USE A SMALLER MEAN, (MEAN <= 5)"
4110  PRINT "THAT VALUE WOULD PUT THE MEDIAN AT";EXP(M)
4120  PRINT "MEAN = ";
4130  INPUT M
4140  GOTO 4090
4150  IF S>0 THEN 4210
4160  PRINT "STANDARD DEVIATION MUST BE POSITIVE.  STANDARD DEVIATION = ";
4170  INPUT S
4180  GOTO 4150
4190  PRINT "M,S = ";
4200  GOTO 4070
4210  RETURN 
4220  FOR I=1 TO N
4230  Z1=RND(0)
4240  Z2=RND(0)
4250  Z=SQR(-2*LOG(Z1))*COS(6.28318*Z2)
4260  X[I,J]=M+Z*S
4270  NEXT I
4280  GOTO 9000
4500  REM : UNIFORM DISTRIBUTION
4510  GOSUB 700
4520  GOSUB 1000
4530  PRINT "ENDPOINTS OF INTERVAL = ";
4540  INPUT A,B
4550  IF A<B THEN 4580
4560  PRINT "FIRST VALUE MUST BE LESS THAN THE SECOND"
4570  GOTO 4530
4580  L=B-A
4590  FOR I=1 TO N
4600  X[I,J]=A+RND(0)*L
4610  NEXT I
4620  GOTO 9000
5000  REM : AR(1)
5040  GOTO 6050
6000  REM:ARMA
6010  IF Q9>1 THEN 6050
6020  PRINT "WANT EXPLANATION ";
6022  INPUT B$
6024  IF B$[1,1]="N" THEN 6050
6030  PRINT "ARMA GENERATES BOX-JENKINS TYPE TIME-SERIES MODELS."'10'13"SEE:"
6032  PRINT "TIME-SERIES ANALYSIS"'10'13"  G.E.P. BOX AND B.M. JENKINS"
6034  PRINT "    HOLDEN-DAY,1970"
6050  GOSUB 700
6052  GOSUB 1000
6053  I4=J
6054  Q[8]=1
6056  IF D$[1,4]="ARG1" THEN 9945
6058  Q[8]=2
6060  GOTO 9945
8999  REM:CHAIN TO IDA912 FOR UPDATING
9000  IF Q[1]=0 THEN 9008
9001  Q[8]=Q[6]=45
9002  X[N9+3,J]=0
9003  GOTO 9008
9008  I4=J
9010  GOTO 9912
9912  CHAIN "$IDA912"
9945  CHAIN "$IDA45A"
9996  PRINT "'RAND EXECUTION ABORTED."
9998  CHAIN "$IDA",150
9999  END 
