Posted by: programmervb on: June 3, 2008
1000 CLS : : DIM A(15000): DIM B(15000)
1010 INPUT “NUMBER OF SIDES”; NS
1020 IF NS < 2 THEN PRINT : PRINT “NOT LIKELY”: GOTO 1010
1030 PRINT
1040 INPUT “NUMBER OF DICE”; ND
1050 IF ND = 0 THEN PRINT : PRINT “NOT LIKELY”: GOTO 1040
1060 IF ND = 1 THEN 1670
1070 IF ND = 2 THEN 1100
1080 IF ND > 3 THEN : CLS : LOCATE 12, 30: PRINT “<<<ONE MOMENT PLEASE!>>>”
1090 CN = 1: LV = 2
1100 FOR X = 1 TO NS
1110 A(X) = X: NEXT X
1120 X = NS + 1
1130 FOR Y = NS – 1 TO 1 STEP -1
1140 A(X) = Y: X = X + 1: NEXT Y
1150 IF ND = 2 THEN 1690
1160 X = 0: DT = 0
1170 FOR Y = 1 TO NS
1180 FOR Z = Y TO 1 STEP -1
1190 DT = DT + A(Z): NEXT Z
1200 X = X + 1: B(X) = DT
1210 DT = 0: NEXT Y
1220 X = NS + 1
1230 FOR Y = 1 TO CN * (NS – 1)
1240 FOR Z = 1 TO NS
1250 DT = DT + A(Z + Y): NEXT Z
1260 B(X) = DT: X = X + 1
1270 DT = 0: NEXT Y
1280 X = NS * LV – V
1290 FOR Y = NS – 1 TO 1 STEP -1
1300 B(X) = B(Y): X = X + 1: NEXT Y
1310 CN = CN + 1: LV = LV + 1: V = V + 1
1320 IF LV < ND THEN 1340
1330 GOTO 1380
1340 ERASE A
1360 FOR L = 1 TO 1000
1370 A(L) = B(L): NEXT L: GOTO 1160
1380 PRINT : PRINT
1390 SCREEN 2: KEY OFF: CLS
1400 TC = NS * ND – (ND – 1)
1410 BC = INT(TC / 2 + 1)
1420 SF = 190 / B(BC): HF = 640 / (NS * ND – ND)
1430 X = 0: OT = NS ^ ND
SCREEN 0
COLOR 11, 1: CLS
1440 LOCATE 1, 23: PRINT “A”; NS; “SIDED DIE THROWN”; ND; “TIMES”
1450 LOCATE 2, 15: PRINT “YIELDS THE FOLLOWING TOTALS AND PROBABILITIES”: PRINT : PRINT
1460 C$ = “#### = ##.##% “
1470 FOR L = 1 TO TC
1480 PRINT USING C$; L + ND – 1; B(L) / OT * 100;
1500 NEXT
‘DRAWS THE GRAPH
1510 LOCATE 25, 20: PRINT “PRESS SPACE BAR TO SEE PROBABILITY CURVE”
F = 0
1520 K$ = INKEY$: IF K$ = CHR$(32) THEN 1540
1530 GOTO 1520
1540 IF ND = 2 THEN SF = 185 / A(NS): HF = 640 / (NS + NS – 1)
1550 CLS : SCREEN 9: PSET (0, 295 – SF)
1560 FOR P = 1 TO TC: F = F + 1
1570 Y = B(P) * SF
1580 LINE -(X, 295 – Y): COLOR F, O: IF F > 14 THEN F = 1
1590 IF B(P) = 1 THEN 1610
1600 PSET (X, 295 – SF): LINE -(X, 295 – Y)
1610 X = X + HF
1620 NEXT
1630 LINE (0, 295 – SF)-(639, 295 – SF)
1640 LOCATE 1, 27: PRINT “A”; NS; “SIDED DIE TOSSED”; ND; “TIMES”
1650 SLEEP 2
1660 GOTO 1750
1670 SD = (1 / NS * 100): SD = SD + .005: SD = INT(SD * 100) / 100
1680 PRINT : PRINT “THE PROBABILITY OF GETTING A 1 THROUGH”; NS; “IS”; SD; “%”
1690 CLS : LOCATE 1, 23: PRINT “A”; NS; “SIDED DIE THROWN 2 TIMES”
1700 LOCATE 2, 15: PRINT “YIELDS THE FOLLOWING TOTALS AND PROBABILITIES”: PRINT : PRINT
1710 C$ = “#### = ##.##% “
1720 FOR L = 1 TO NS + NS – 1
1730 PRINT USING C$; L + 1; A(L) / NS ^ 2 * 100; : NEXT
1750 SLEEP