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.
 
 
 
 
 
 

77 lines
1.9 KiB

  1. 10 PRINT "PROGRAM FILE 139: PERMUTATION TEST FOR THE RND FUNCTION."
  2. 20 PRINT " ANSI STANDARD 8.4"
  3. 30 PRINT
  4. 40 PRINT "SECTION 139.1: PERMUTATION TEST FOR THE RND FUNCTION."
  5. 50 PRINT
  6. 60 PRINT "THIS PROGRAM TESTS TO SEE THAT WITHIN FIXED SIZE GROUPS"
  7. 70 PRINT "OF RANDOM NUMBERS, ALL ORDERS OF THE VALUES ARE EQUALLY"
  8. 80 PRINT "PROBABLE. CHI-SQUARE IS COMPUTED AND DISPLAYED TO SEE"
  9. 90 PRINT "WHETHER THE RESULTS ARE COMPATIBLE WITH THE EXPECTED"
  10. 100 PRINT "EXPECTED DISTRIBUTION FOR UNIFORM RANDOM NUMBERS."
  11. 110 PRINT
  12. 120 PRINT "***** THIS TEST IS INFORMATIVE ONLY *****"
  13. 130 PRINT
  14. 140 PRINT " BEGIN TEST"
  15. 150 PRINT
  16. 160 DIM C(25)
  17. 170 REM SET SIZE OF GROUP:
  18. 180 LET T=4
  19. 190 LET T1=1
  20. 200 REM T1=T1
  21. 210 FOR I=2 TO T
  22. 220 LET T1=T1*I
  23. 230 NEXT I
  24. 240 REM SET #TRIALS
  25. 250 LET N=10*T1
  26. 260 FOR I=0 TO T1
  27. 270 LET C(I)=0
  28. 280 NEXT I
  29. 290 FOR N1=1 TO N
  30. 300 LET A=0
  31. 310 LET K=1
  32. 320 FOR I=1 TO T
  33. 330 LET B(I)=RND
  34. 340 NEXT I
  35. 350 FOR R=T TO 1 STEP -1
  36. 360 LET M1=-1
  37. 370 REM FIND MAX OF REMAINDER OF THIS GROUP
  38. 380 FOR I=1 TO R
  39. 390 IF B(I)<M1 THEN 420
  40. 400 LET M1=B(I)
  41. 410 LET S=I
  42. 420 NEXT I
  43. 430 LET A=A+((S-1)*K)
  44. 440 LET K=K*R
  45. 450 LET B(S)=B(R)
  46. 460 NEXT R
  47. 470 REM VARIABLE A IS AN INTEGER, 0<=A<=T1, UNIQUELY SPECIFYING
  48. 480 REM THE ORDERING OF THIS GROUP.
  49. 490 LET C(A)=C(A)+1
  50. 500 NEXT N1
  51. 510 LET S=0
  52. 520 PRINT
  53. 530 PRINT "ORDER ID","ACTUAL COUNT"
  54. 540 PRINT "(EXPECTED COUNT = 10 FOR ALL CASES.)"
  55. 550 PRINT
  56. 560 FOR I=0 TO T1-1
  57. 570 LET S=S+(C(I)*C(I)*T1)
  58. 580 PRINT I,C(I)
  59. 590 NEXT I
  60. 600 LET V=(S/N) - N
  61. 605 PRINT
  62. 610 PRINT "FOR 23 D.F., SHOULD HAVE 13.0905 <= CHI-SQ <= 35.1725"
  63. 620 PRINT "(5% TAIL AT EACH END.)"
  64. 630 PRINT
  65. 640 PRINT "ACTUAL CHI-SQ = ";V
  66. 650 PRINT
  67. 660 IF V<13.0905 THEN 700
  68. 670 IF V>35.1725 THEN 700
  69. 680 PRINT "*** INFORMATIVE TEST PASSED ***"
  70. 690 GOTO 710
  71. 700 PRINT "*** INFORMATIVE TEST FAILED ***"
  72. 710 PRINT
  73. 720 PRINT " END TEST"
  74. 730 PRINT
  75. 740 PRINT "END PROGRAM 139"
  76. 750 END