10  REM ***  HP TIME-SHARED BASIC PROGRAM LIBRARY  *********************
11  REM
12  REM         H-LIFE:  HALF LIFE SIMULATION
13  REM
14  REM         36134 (A833) REV A -- 7/71
15  REM
16  REM ***  CONTRIBUTED PROGRAM  **************************************
17  REM
100  REM HALF LIFE SIMULATION
105  DIM D[20],T[20],L[20],R[20],X[20],Y[20],A$[5],E$[60],F$[60]
110  PRINT "DO YOU NEED EXPLANATION";
115  INPUT A$
120  IF A$ <> "YES" THEN 145
125  PRINT "THIS PROGRAM SIMULATES THE DECAY OF 1000 RADIOACTIVE"
130  PRINT "NUCLEII BY SIMULATING THE TOSSING OF 1000 20-SIDED"
135  PRINT "DICE.  ONE SIDE OF EACH DICE IS ASSUMED TO BE MARKED,"
136  PRINT "SO THAT IF THAT SIDE IS UP AFTER THE TOSS, THE NUCLEUS"
137  PRINT "THAT IT REPRESENTS IS CONSIDERED TO HAVE DECAYED."
138  PRINT "AFTER EACH TOSS, THOSE DICE WHICH HAVE DECAYED ARE"
139  PRINT "REMOVED FROM THE EXPERIMENT, SINCE THEY CANNOT DECAY"
140  PRINT "A SECOND TIME.  ANSWER ANY QUESTIONS EITHER YES OR NO."
145  LET R=1000
150  PRINT "IT WILL TAKE ABOUT 3 MINUTES TO TOSS THE DICE"
155  PRINT "20 TIMES BEFORE ANY FURTHER PRINTING WILL OCCUR."
160  LET T[1]=1
165  PRINT 
170  PRINT 
175  PRINT "NO. OF TOSS","NO OF DECAYS","NO. REMAINING"
180  PRINT "-----------","------------","-------------"
185  LET S5=0
190  FOR K=1 TO R
195  LET S5=S5+2*RND(1)/20
200  NEXT K
205  LET D[1]=INT(S5)
210  LET R[1]=1000-D[1]
215  FOR I=2 TO 20
220  LET T[I]=I
225  LET S5=0
230  FOR K=1 TO R
235  LET S5=S5+2*RND(1)/20
240  NEXT K
245  LET D[I]=INT(S5)
250  LET R[I]=R[I-1]-D[I]
255  LET R=R[I]
260  IF R <= 0 THEN 835
265  NEXT I
270  FOR I=1 TO 20
275  PRINT T[I],D[I],R[I]
280  NEXT I
285  REM ************************************************************
290  FOR I=1 TO 20
295  LET X[I]=T[I]-1
300  LET Y[I]=D[I]
305  NEXT I
310  REM S=Y-START, S1=Y-SPACING
315  LET S=75
320  LET S1=3
325  LET E$="DECAYS AS A FUNCTION OF TIME (TOSSES)"
330  LET F$="NOTE:TIME=0 IS TOSS NO. 1, TIME=1 IS TOSS NO. 2, ETC."
335  GOSUB 495
340  REM ************************************************************
345  FOR I=1 TO 20
350  LET X[I]=T[I]-1
355  LET Y[I]=R[I]
360  NEXT I
365  LET S=1000
370  LET S1=50
375  LET E$="NUMBER REMAINING AS A FUNCTION OF TIME (TOSSES)"
380  GOSUB 495
385  REM ************************************************************
390  PRINT "DO YOU WISH TO HAVE TABLE OF LN OF DECAYS, GRAPH"
395  PRINT "OF LN DECAYS VS. TIME, AND DECAY CONSTANT";
400  INPUT A$
405  IF A$ <> "YES" THEN 845
410  PRINT "NO. OF TOSS","NO. OF DECAYS","LN OF NO. OF DECAYS"
415  PRINT "-----------","-------------","-------------------"
420  FOR I=1 TO 20
425  LET L[I]=LOG(D[I])
430  PRINT T[I],D[I],L[I]
435  NEXT I
440  LET S=5
445  LET S1=.2
450  LET E$="LN OF DECAYS AS A FUNCTION OF TIME (TOSSES)"
455  FOR I=1 TO 20
460  LET X[I]=T[I]-1
465  LET Y[I]=L[I]
470  NEXT I
475  GOSUB 495
480  GOSUB 745
485  GOTO 845
490  REM ************************************************************
495  REM SORTING SUBROUTINE
500  PRINT 
505  LET R=1
510  IF Y[R+1] <= Y[R] THEN 550
515  LET T=Y[R+1]
520  LET Y[R+1]=Y[R]
525  LET Y[R]=T
530  LET U=X[R+1]
535  LET X[R+1]=X[R]
540  LET X[R]=U
545  GOTO 505
550  LET R=R+1
555  IF R<20 THEN 510
560  REM ************************************************************
565  REM PLOTTING SUBROUTINE
570  PRINT 
575  PRINT 
580  PRINT E$
585  PRINT 
590  LET R=1
595  FOR Y=S TO 0 STEP -S1
600  IF R>20 THEN 690
605  IF Y[R]<Y THEN 635
610  IF Y[R+1] >= Y THEN 645
615  GOTO 665
620  NEXT Y
625  GOTO 705
630  REM PRINT OPTIONS FOR PLOTTING
635  PRINT Y
640  GOTO 620
645  PRINT Y,'13,TAB(5+2*X[R])"*";'13;
650  LET R=R+1
655  IF R=20 THEN 665
660  GOTO 610
665  PRINT Y,'13,TAB(5+2*X[R])"*"
670  IF R=20 THEN 685
675  LET R=R+1
680  GOTO 620
685  LET Y=Y-S1
690  FOR J=Y TO 0 STEP -S1
695  PRINT J
700  NEXT J
705  PRINT "     0   2   4   6   8  10  12  14  16  18  20"
710  PRINT "                       TIME"
715  PRINT 
720  PRINT F$
725  PRINT 
730  PRINT 
735  RETURN 
740  REM ************************************************************
745  REM LEAST SQUARES SUBROUTINE
750  LET S1=S2=S3=S4=0
755  FOR I=1 TO 20
760  LET S1=S1+X[I]
765  LET S2=S2+Y[I]
770  LET S3=S3+(X[I]^2)
775  LET S4=S4+X[I]*Y[I]
780  NEXT I
785  LET M=(S4-S1*S2/20)/(S3-S1^2/20)
790  REM B IS Y-INTERCEPT,BUT WILL NOT BE PRINTED
795  LET B=S2/20-M*S1/20
800  PRINT "SLOPE OF THE LINE JUST PLOTTED IS "M
805  PRINT "THIS SLOPE IS THE DECAY CONSTANT"
810  PRINT "ACCEPTED VALUE FOR THE DECAY CONSTANT IS -0.05000"
815  PRINT "PER CENT ERROR IN DECAY CONSTANT IS ";
820  PRINT ABS(ABS(M)-.05)/.05*100
825  RETURN 
830  REM ************************************************************
835  PRINT "RESULTS JUST CALCULATED ARE NOT STATISTICALLY"
840  PRINT "PROBABLE.  TO START OVER, TYPE RUN"
845  END 
