ChipMaster's bwBASIC This also includes history going back to v2.10. *WARN* some binary files might have been corrupted by CRLF.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

109 lines
2.9 KiB

  1. 10 PRINT "PROGRAM FILE 141: MAXIMUM OF GROUP TEST OF RND FUNCTION."
  2. 20 PRINT " ANSI STANDARD 8.4"
  3. 30 PRINT
  4. 40 PRINT "SECTION 141.1: MAXIMUM OF GROUP TEST OF RND FUNCTION."
  5. 50 PRINT
  6. 60 PRINT "THIS PROGRAM FINDS THE MAXIMUM RANDOM NUMBER AMONG FIXED-"
  7. 70 PRINT "SIZE GROUPS AND DETERMINES WHETHER THE DISTRIBUTION OF THE"
  8. 80 PRINT "MAXIMA IS SUFFICIENTLY CLOSE TO THE EXPECTED DISTRIBUTION"
  9. 90 PRINT "FOR UNIFORM RANDOM NUMBERS OF F(X) = X^T, WHERE T IS THE"
  10. 100 PRINT "SIZE OF THE GROUPS. THE KOMOLGOROV-SMIRNOV TEST IS USED"
  11. 110 PRINT "TO MEASURE HOW WELL THE RESULTS MATCH THE EXPECTATION."
  12. 120 PRINT
  13. 130 PRINT "***** THIS TEST IS INFORMATIVE ONLY *****"
  14. 140 PRINT
  15. 150 PRINT " BEGIN TEST"
  16. 160 PRINT
  17. 170 DIM P(1000)
  18. 180 REM SET SIZE OF GROUP
  19. 190 LET T=3
  20. 200 REM SET NUMBER OF TRIALS
  21. 210 LET N=1000
  22. 220 FOR I=1 TO N
  23. 230 REM MARK AS EMPTY
  24. 240 LET P(I)=3
  25. 250 NEXT I
  26. 260 FOR I=1 TO N
  27. 270 LET M=0
  28. 280 FOR J=1 TO T
  29. 290 LET X=RND
  30. 300 IF X<M THEN 320
  31. 310 LET M=X
  32. 320 NEXT J
  33. 330 REM M IS MAX OF GROUP
  34. 340 REM X1 IS BEST GUESS FOR LOCATION OF M, BASED ON
  35. 350 REM EXPECTED DISTRIBUTION OF F(X) = M^T
  36. 360 LET X1=INT((M^T)*N) + 1
  37. 370 IF P(X1)<>3 THEN 420
  38. 380 REM PRIMARY SLOT EMPTY - FILL IN WITH M
  39. 390 LET P(X1)=M
  40. 400 GOTO 550
  41. 410 REM IF PRIMARY SLOT FILLED, SEARCH FOR NEAREST EMPTY SLOT
  42. 420 FOR J=1 TO N
  43. 430 IF X1-J<1 THEN 470
  44. 440 IF P(X1-J)<>3 THEN 470
  45. 450 LET P(X1-J)=M
  46. 460 GOTO 550
  47. 470 IF X1+J>N THEN 510
  48. 480 IF P(X1+J)<>3 THEN 510
  49. 490 LET P(X1+J)=M
  50. 500 GOTO 550
  51. 510 NEXT J
  52. 520 PRINT "RED ALERT - NO SLOT FOUND",I,M
  53. 530 PRINT "ERROR IN SORT ALGORITHM - PROGRAM TERMINATES."
  54. 540 GOTO 1050
  55. 550 NEXT I
  56. 560 REM BUBBLE-SORT TABLE VALUES
  57. 570 LET B1=1
  58. 580 LET B3=1
  59. 590 REM A3=0 IMPLIES NO SWAPPING DONE YET
  60. 600 LET A3=0
  61. 610 FOR I=B1 TO N-B1 STEP B3
  62. 620 IF P(I)<=P(I+1) THEN 670
  63. 630 LET W=P(I)
  64. 640 LET P(I)=P(I+1)
  65. 650 LET P(I+1)=W
  66. 660 LET A3=3
  67. 670 NEXT I
  68. 680 REM B1 AND B3 CAUSE THE BUBBLE-SORT TO ALTERNATELY SCAN THE ARRAY
  69. 690 REM FORWARDS AND BACKWARDS
  70. 700 LET B1=N-B1
  71. 710 LET B3=-B3
  72. 720 IF A3<>0 THEN 600
  73. 730 LET M1=-1E38
  74. 740 LET M2=-1E38
  75. 750 REM FIND K+ AND K- ON PRIMARY DATA
  76. 760 FOR I=1 TO N
  77. 770 LET P1=P(I)^T
  78. 780 LET N1=(I/N) - P1
  79. 790 LET N2=P1 - ((I-1)/N)
  80. 800 IF N1<M1 THEN 820
  81. 810 LET M1=N1
  82. 820 IF N2<M2 THEN 840
  83. 830 LET M2=N2
  84. 840 NEXT I
  85. 850 LET N5=SQR(N)
  86. 860 LET M1=M1*N5
  87. 870 LET M2=M2*N5
  88. 880 PRINT
  89. 890 REM EXPECTED DISTRIBUTION FOR K+ AND K- WHEN N IS LARGE.
  90. 900 LET P1=1 - (EXP(-2*M1*M1))
  91. 910 LET P2=1 - (EXP(-2*M2*M2))
  92. 920 PRINT " K+ = ";M1," PERCENTILE FOR K+ = ";P1
  93. 930 PRINT " K- = ";M2," PERCENTILE FOR K- = ";P2
  94. 940 PRINT
  95. 950 PRINT "PERCENTILES SHOULD BE BETWEEN .05 AND .95"
  96. 960 PRINT
  97. 970 IF P1<.05 THEN 1030
  98. 980 IF P1>.95 THEN 1030
  99. 990 IF P2<.05 THEN 1030
  100. 1000 IF P2>.95 THEN 1030
  101. 1010 PRINT "*** INFORMATIVE TEST PASSED ***"
  102. 1020 GOTO 1040
  103. 1030 PRINT "*** INFORMATIVE TEST FAILED ***"
  104. 1040 PRINT
  105. 1050 PRINT " END TEST"
  106. 1060 PRINT
  107. 1070 PRINT "END PROGRAM 141"
  108. 1080 END