辽宁省营商环境建设监督局网站小程序代码
本文以双色球选择红色6个号码为例
我们先把问题简化,双色球红色号码一共有33个球。摇奖时,每次随机摇出来一个号码,连续6次,就随机出来了6个红色球号码。
而这6个号码就是一注彩票里的前6个红色球号码。这里不讨论一注彩票里后端的1个蓝色球号码。
设想的原理:
双色球前6个红球号码,一共有 33 x 32 x 31 x 30 x 29 x 28 = 797448960 注
1. 把 797448960 注号码导入到数据库的一张表里待用;
2. 编写摇奖模形程序步骤:
    
     a)先设定随机函数的种子,保证程序运行出现的随机数,不是伪随机数;
     b)模拟从33个号码里,随机取出 1 个号码作为第 1 个号码;重复此步骤,直至随机取到第 6 个 号码,组成一组号码,也就是一注彩票号码;
     c)再拿上面得到的这组号码,去和数据库表的 797448960 注号码比对,6个号码相同的,则在数据表里的另一个字段“出现次数”记录为 1次;
        不断重复 b、c 两个步骤,把一定时间长度内(例如 1 个小时)随机出现的各注号码的次数全部记录下来。
     d)有了各注号码出现次数的记录之后,就把出现过的和没有出现过的分成两组。那么当天晚上的彩票号码,必定在其中的一个组。
     e)如果选择其中的一个组作为中奖组,则另一个组将被排除。但是机器跑起来比较快,反过来用被排除组作为中奖组,原来那一组再排除掉。
     f)按照上面的4个组,再建4张数据库表,重复b、c两个步骤,把一定时间长度内(例如 1 个小时)随机出现的各注号码的次数在新4个表中各自记录下来。
     g)重复上述再做多次(例如:100次),那么后来的结果,一定有喜欢的号码了。
 3. 这里给出 FOXPRO 的 DEMO 程序,供有兴趣者参考:
SET EXCLUSIVE ON
 USE abb
 delete all 
 PACK
 CLOSE ALL
 SET TALK OFF
 SET SAFETY  OFF
 CLEAR
 USE 222.1.dbf
 GO TOP
 DO WHILE .not. EOF()
 b=cvalue
 SKIP
 E=CVALUE
 F=E-B
 IF F<>1
 IF f=2
 *? B+1
 INSERT INTO abb (cvalue) VALUES (b+1)
 ENDIF
 IF f=3
 INSERT INTO abb (cvalue) VALUES (b+1)
 INSERT INTO abb (cvalue) VALUES (b+2)
 *? e-2
 *? e-1
 ENDIF
 IF f=4
 INSERT INTO abb (cvalue) VALUES (b+1)
 INSERT INTO abb (cvalue) VALUES (b+2)
 INSERT INTO abb (cvalue) VALUES (b+3)
 *? e-1
 *? e-2
 *? e-3
 ENDIF
 IF f=5
 INSERT INTO abb (cvalue) VALUES (b+1)
 INSERT INTO abb (cvalue) VALUES (b+2)
 INSERT INTO abb (cvalue) VALUES (b+3)
 INSERT INTO abb (cvalue) VALUES (b+4)
 *? e-1
 *? e-2
 *? e-3
 *? e-4
 ENDIF
 IF f=6
 INSERT INTO abb (cvalue) VALUES (b+1)
 INSERT INTO abb (cvalue) VALUES (b+2)
 INSERT INTO abb (cvalue) VALUES (b+3)
 INSERT INTO abb (cvalue) VALUES (b+4)
 INSERT INTO abb (cvalue) VALUES (b+5)
*? e-1
 *? e-2
 *? e-3
 *? e-4
 ENDIF
 IF f=7
 INSERT INTO abb (cvalue) VALUES (b+1)
 INSERT INTO abb (cvalue) VALUES (b+2)
 INSERT INTO abb (cvalue) VALUES (b+3)
 INSERT INTO abb (cvalue) VALUES (b+4)
 INSERT INTO abb (cvalue) VALUES (b+5)
 INSERT INTO abb (cvalue) VALUES (b+6)
*? e-1
 *? e-2
 *? e-3
 *? e-4
 ENDIF
IF f=8
 INSERT INTO abb (cvalue) VALUES (b+1)
 INSERT INTO abb (cvalue) VALUES (b+2)
 INSERT INTO abb (cvalue) VALUES (b+3)
 INSERT INTO abb (cvalue) VALUES (b+4)
 INSERT INTO abb (cvalue) VALUES (b+5)
 INSERT INTO abb (cvalue) VALUES (b+6)
 INSERT INTO abb (cvalue) VALUES (b+7)
*? e-1
 *? e-2
 *? e-3
 *? e-4
 ENDIF
 IF f=9
 INSERT INTO abb (cvalue) VALUES (b+1)
 INSERT INTO abb (cvalue) VALUES (b+2)
 INSERT INTO abb (cvalue) VALUES (b+3)
 INSERT INTO abb (cvalue) VALUES (b+4)
 INSERT INTO abb (cvalue) VALUES (b+5)
 INSERT INTO abb (cvalue) VALUES (b+6)
 INSERT INTO abb (cvalue) VALUES (b+7)
 INSERT INTO abb (cvalue) VALUES (b+8)
 *? e-1
 *? e-2
 *? e-3
 *? e-4
 ENDIF
 IF f=10
 INSERT INTO abb (cvalue) VALUES (b+1)
 INSERT INTO abb (cvalue) VALUES (b+2)
 INSERT INTO abb (cvalue) VALUES (b+3)
 INSERT INTO abb (cvalue) VALUES (b+4)
 INSERT INTO abb (cvalue) VALUES (b+5)
 INSERT INTO abb (cvalue) VALUES (b+6)
 INSERT INTO abb (cvalue) VALUES (b+7)
 INSERT INTO abb (cvalue) VALUES (b+8)
 INSERT INTO abb (cvalue) VALUES (b+9)
 *? e-1
 *? e-2
 *? e-3
 *? e-4
 ENDIF
ENDIF
 ENDDO
 CLOSE ALL
  
 *Rand(-1)
 *CLOSE DATABASES
 *CREATE TABLE Random (cValue N(6))
 *FOR nItem = 1 TO 324632 && Append 1000 records,
    *APPEND BLANK
   * REPLACE cValue WITH 1+INT(RAND( )*324632)  && Insert random values
 *ENDFOR
&&CLEAR
 &&LIST  && Display the values
 &&gnMaximum = 1  && Initialize minimum value
 &&gnMinimum = 1000  && Initialize maximum value
 &&SCAN 
 &&FOR nItem = 1 TO 324632
   
   &&ENDFOR
   
    &&gnMaximum = MAX(gnMaximum, cValue)
 &&ENDSCAN
&&? 'The minimum value is: ', gnMinimum  && Display minimum value
 &&? 'The maximum value is: ', gnMaximum  && Display maximum value
&&CLEAR
 &&gnLower = 1
 &&gnUpper = 100
&&? INT((gnUpper - gnLower + 1) * RAND( ) + gnLower)
4. 也可以用其他数据库或者其他语言编程(例如C、C++等等)。
