* * 浜様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様融 * � LOTTO Number Selection Program by Per Kjellqvist (CIS 71540,2311) � * � � * � July 12, 1990 � * � � * � This little program can be used to select numbers randomly for a lotto � * � slip. I found that when I fill out a slip by just making up the � * � numbers I tend to spread them out, which is not really a random � * � selection. � * � Before you compile the program fill out the two variables; � * � � * � lboard - the highest number on the board � * � lpick - how many to pick � * � � * 藩様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様夕 PRIV lboard, lpick, lxx, ll, lgo, lno, la, lb, lkey * ============================================================================ lboard = 50 && numbers on each board lpick = 6 && numbers to pick * ============================================================================ CLEAR @ 0,0 TO 24,79 DOUB @ 1,8 SAY "L O T T O S E L E C T I O N B y P E R K J E L L Q V I S T" SET CURS OFF PRIV Aboard[lboard] DO WHIL .T. * -- INITIALIZING ARRAY --------------------------------------------------- FOR lxx = 1 TO lboard Aboard[lxx] = lxx NEXT @ 13,17 SAY "敖賃陳堕賃陳堕賃陳堕賃陳堕賃陳堕賃陳堕賃陳堕朕" @ 14,17 SAY "� � � � � � � � � � � � � � � �" @ 15,17 SAY "団津陳田津陳田津陳田津陳田津陳田津陳田津陳田調" @ 16,17 SAY "� � � � � � � � � � � � � � � �" @ 17,17 SAY "団津陳田津陳田津陳田津陳田津陳田津陳田津陳田調" @ 18,17 SAY "� � � � � � � � � � � � � � � �" @ 19,17 SAY "団津陳田津陳田津陳田津陳田津陳田津陳田津陳田調" @ 20,17 SAY "� � � � � � � � � � � � � � � �" @ 21,17 SAY "青珍陳祖珍陳祖珍陳祖珍陳祖珍陳祖珍陳祖珍陳祖潰" FOR lxx = 1 TO lboard HDISP1(lxx) NEXT * ------------------------------------------------------------------------- FOR ll = lboard TO (lboard-lpick+1) STEP -1 && loop to pick numbers HDRAW() && draw the top board lgo = 1 lno = 1 DO WHIL .T. * - SWITCH TWO NUMBERS ----- la = RANDOM()%ll+1 lb = RANDOM()%ll+1 lxx = Aboard[la] Aboard[la] = Aboard[lb] Aboard[lb] = lxx HDISP(la) HDISP(lb) * -------------------------- * -- DRAW THE LIT NUMBER --- HDISP(lno) lno = IF(lno=ll,1,lno+1) SET COLO TO n/w HDISP(lno) SET COLO TO w/n * -------------------------- lgo = lgo + 1 lkey = nextkey() KEYBOARD CHR(0) && clear buffer INKEY() && clear buffer IF lgo = 1000 @ 23,28 SAY "Press a key for a number" ELSEIF (lgo > 1000 .AND. lkey <> 0) .OR. lgo > 10000 .OR. lkey = 27 @ 23,1 CLEA TO 23,78 EXIT ENDI ENDD IF lkey = 27 EXIT ENDI * -- DISPLAY FOUND NUMBER ---------- SET COLO TO n/w HDISP1(Aboard[lno]) SET COLO TO w/n * ---------------------------------- ADEL(Aboard,lno) Aboard[lboard] = 0 INKEY(4) NEXT HDRAW() @ 22,21 SAY " ALL NUMBERS HAVE BEEN SELECTED." @ 23,21 SAY "Press [Any key]-Continue [ESC]-Quit" lkey = INKEY(0) @ 22,1 CLEA TO 23,78 IF lkey = 27 EXIT ENDI ENDD CLEA RETU * ---------------------------------------------------------------------------- * -- DRAW NEW BOARD AND FILL IN NUMBERS FROM ARRAY --------------------------- * ---------------------------------------------------------------------------- FUNC HDRAW PRIV lxx, lyy @ 03,17 SAY "敖賃陳堕賃陳堕賃陳堕賃陳堕賃陳堕賃陳堕賃陳堕朕" @ 04,17 SAY "� � � � � � � � � � � � � � � �" @ 05,17 SAY "団津陳田津陳田津陳田津陳田津陳田津陳田津陳田調" @ 06,17 SAY "� � � � � � � � � � � � � � � �" @ 07,17 SAY "団津陳田津陳田津陳田津陳田津陳田津陳田津陳田調" @ 08,17 SAY "� � � � � � � � � � � � � � � �" @ 09,17 SAY "団津陳田津陳田津陳田津陳田津陳田津陳田津陳田調" @ 10,17 SAY "� � � � � � � � � � � � � � � �" @ 11,17 SAY "青珍陳祖珍陳祖珍陳祖珍陳祖珍陳祖珍陳祖珍陳祖潰" FOR lxx = 1 TO lboard IF ! EMPTY(Aboard[lxx]) HDISP(lxx) ENDI NEXT RETU .T. * ---------------------------------------------------------------------------- * -- PUT A NUMBER FROM THE TOP ARRAY ON THE GRID ----------------------------- * ---------------------------------------------------------------------------- FUNC HDISP PARA lxx @ IF(lxx<16,4,IF(lxx<31,6,IF(lxx<46,8,10))), 15+((lxx-IF(lxx<16,0,IF(lxx<31,15,IF(lxx<46,30,45))))*3) SAY STR(Aboard[lxx],2) RETU .T. * ---------------------------------------------------------------------------- * -- PUT A NUMBER FROM THE LOWER ARRAY ON THE GRID --------------------------- * ---------------------------------------------------------------------------- FUNC HDISP1 PARA lxx @ IF(lxx<16,14,IF(lxx<31,16,IF(lxx<46,18,20))), 15+((lxx-IF(lxx<16,0,IF(lxx<31,15,IF(lxx<46,30,45))))*3) SAY STR(lxx,2) RETU .T.