PHP双色球分析

来源:互联网 发布:湖南大学网络教学 编辑:程序博客网 时间:2024/06/05 18:32

“双色球”福利彩票很受欢迎。为了提高中奖几率,利用统计学的方法对历期中奖号进行分析。本程序参考了国外同类程序和上海彩票网的算法,仅进行数据分析。我将在另外一文中详述怎样由这些分析结果排除不可能的号码,从而提高中奖率。下面是程序主体

  1  <?php
2 if($action == 'raw') // 原始开奖数据
3 {
4 echo '<table cellspacing="1" cellpadding="2" align="center">';
5 echo '<caption>2003-2005各期开奖号码</caption>';
6 $i = -1;
7 foreach($data as $v)
8 {
9 $i++;
10 if($i%2) $class="treven";
11 else $class = "trord";
12 if($i%20==0) echo <<<END
13 <tr>
14 <th>序号</th>
15 <th>期号</th>
16 <th>开奖日期</th>
17 <th>开奖号码</th>
18 <th>销售额</th>
19 <th>特别奖</th>
20 </tr>
21 END;
22 $b1 = sprintf('%02d', $v[2]);
23 $b2 = sprintf('%02d', $v[3]);
24 $b3 = sprintf('%02d', $v[4]);
25 $b4 = sprintf('%02d', $v[5]);
26 $b5 = sprintf('%02d', $v[6]);
27 $b6 = sprintf('%02d', $v[7]);
28 $b7 = sprintf('%02d', $v[8]);
29 echo <<<END
30 <tr class="{$class}">
31 <th align="right">{$i}</th>
32 <td>{$v[0]}</td>
33 <td>{$v[1]}</td>
34 <td><span class="red">{$b1} {$b2} {$b3} {$b4} {$b5} {$b6}</span> <span class="blue">{$b7}</td>
35 <td align="right">{$v[9]}</td>
36 <td>{$v[10]}</td>
37 </tr>
38 END;
39 }
40 echo '</table>';
41 }
42 if($action == 'cell')
43 {
44 echo '<table cellspacing="1" cellpadding="2" align="center" bgcolor="#cccccc">' . "/n";
45 echo '<caption>各期开奖中色球分布情况一览</caption>';
46 echo <<<END
47 <tr>
48 <th>&nbsp;</th>
49 <th colspan="33">红色球</th>
50 <th width="1" bgcolor="#cccccc"></th>
51 <th colspan="33">蓝色球</th>
52 </tr>
53 END;
54 $i = 0;
55 foreach($data as $v)
56 {
57 echo ' <tr class="trplain">' . "/n";
58 echo ' <th>'.$v[0].'</th>' . "/n";
59 $ball = array_slice($v, 2, 6);
60 for($j=1;$j<=33;$j++)
61 {
62 if( in_array($j, $ball) ) echo ' <td>'.sprintf('%02d', $j).'</td>' . "/n";
63 else echo ' <td>&nbsp;</td>' . "/n";
64 }
65 echo ' <td width="1" bgcolor="#cccccc"></td>' . "/n";
66 for($j=1;$j<=6;$j++)
67 {
68 if( $j == $v[8] ) echo ' <td>'.sprintf('%02d', $j).'</td>' . "/n";
69 else echo ' <td>&nbsp;</td>' . "/n";
70 }
71 echo ' </tr>' . "/n";
72 }
73 echo '</table>' . "/n";
74 }
75 if($action == 'ball')
76 {
77 $r = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
79 $b = array(0, 0, 0, 0, 0, 0);
80 foreach($data as $v)
81 {
82 $ball = array_slice($v, 2, 6);
83 for($j=1;$j<=33;$j++)
84 {
85 if( in_array($j, $ball) ) $r[$j]++;
86 }
87 for($j=1;$j<=6;$j++)
88 {
89 if( in_array($j, $ball) ) $b[$j]++;
90 }
91 }
92 $total = count($data);
93 echo '<table cellspacing="1" cellpadding="2" align="center">';
94 echo '<caption>各色球在各期开奖中出现次数统计</caption>';
95 echo <<<END
96 <tr>
97 <th>SN</th>
98 <th>红色球条形图</th>
99 <th>比例</th>
100 <th>碒问?font color="#ffff00"></th>
101 </tr>
102 END;
103 for($i=1;$i<=33;$i++)
104 {
105 echo ' <tr>';
106 echo ' <td>'. sprintf('%02d', $i) .'</td>'. "/n";
107 echo ' <td><span class="redbar" style="width:' . $r[$i]*8 . ';"></span></td>'. "/n";
108 $percent = round($r[$i]/$total/6, 2) * 100;
109 echo ' <td>'.$percent. '%</td>'. "/n";
110 echo ' <td>'. $r[$i] . '</td>' . "/n";
111 echo ' </tr>';
112 }
113 echo <<<END
114 <tr>
115 <th>SN</th>
116 <th>蓝色球条形图</th>
117 <th>比例</th>
118 <th>次数</th>
119 </tr>
120 END;
121 for($i=1;$i<=6;$i++)
122 {
123 echo ' <tr>';
124 echo ' <td>'. sprintf('%02d', $i) .'</td>'. "/n";
125 echo ' <td><span class="bluebar" style="width:' . $b[$i]*5 . ';"></span></td>'. "/n";
126 $percent = round($b[$i]/$total, 2) * 100;
127 echo ' <td>'.$percent. '%</td>'. "/n";
128 echo ' <td>'. $b[$i] . '</td>' . "/n";
129 echo ' </tr>';
130 }
131 echo '</table>';
132 }
133 if($action == 'sum')
134 {
135 $span = 10;
136 $red = array(); $total = array();
137 foreach($data as $v)
138 {
139 $red[$v[0]]=0; $total[$v[0]] = 0;
140 for($j=2;$j<=7;$j++)
141 {
142 $red[$v[0]] += $v[$j];
143 }
144 $total[$v[0]] = $red[$v[0]] + $v[8];
145 }
146 asort($red); asort($total);
147 $spanred = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, );
149 $spantotal = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, );
151 for($i=0; $i<end($red); $i=$i+$span)
152 {
153 foreach($red as $v) if($v>$i && $v<=$i+$span) $spanred[$i]+=1;
154 foreach($total as $v) if($v>$i && $v<=$i+$span) $spantotal[$i]+=1;
155 }
156 echo '<table cellspacing="1" cellpadding="2" align="center">';
157 echo '<caption>各期所有红色球諬头植记榭?lt;/caption>';
158 echo <<<END
159 <tr>
160 <th colspan="3">区间</th>
161 <th>色球之和的次数</th>
162 </tr>
163 END;
164 foreach($spanred as $k=>$v)
165 {
166 if($v==0) continue;
167 $end = $k + $span;
168 $width = $v*10;
169 echo <<<END
170 <tr>
171 <td align="right">{$k}</td>
172 <td>-</td>
173 <td align="right">{$end}</td>
174 <td><span class="redbar" style="width:{$width}"></span> {$v}</td>
175 </tr>
176 END;
177 }
178 echo '</table>';
179 echo '<table cellspacing="1" cellpadding="2" align="center">';
180 echo '<caption>各期所有色球(红色球与蓝色球)之和分布情况</caption>';
181 echo <<<END
182 <tr>
183 <th colspan="3">区间</th>
184 <th>色球之和的次数</th>
185 </tr>
186 END;
187 foreach($spantotal as $k=>$v)
188 {
189 if($v==0) continue;
190 $end = $k + $span;
191 $width = $v*10;
192 echo <<<END
193 <tr>
194 <td align="right">{$k}</td>
195 <td>-</td>
196 <td align="right">{$end}</td>
197 <td><span class="bluebar" style="width:{$width}"></span> {$v}</td>
198 </tr>
199 END;
200 }
201 echo '</table>';
202 }
203 if($action == 'diff')
204 {
205 $diff = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, );
207 foreach($data as $v)
208 {
209 for($j=2;$j<7;$j++)
210 {
211 $gap = $v[$j+1] - $v[$j];
212 $diff[$gap] ++;
213 }
214 }
215 echo '<table cellspacing="1" cellpadding="2" align="center">';
216 echo '<caption>连续差值分布</caption>';
217 echo <<<END
218 <tr>
219 <th>差值</th>
220 <th>次数</th>
221 </tr>
222 END;
223 foreach($diff as $k=>$v)
224 {
225 if($v==0) continue;
226 $width = $v*2;
227 echo <<<END
228 <tr>
229 <td align="right">{$k}</td>
230 <td><span class="redbar" style="width:{$width}"></span> {$v}</td>
231 </tr>
232 END;
233 }
234 echo '</table>';
235 }
236 ?>

数据的格式为

$data[] = array(2003001, '2003-02-23', 10, 11, 12, 13, 26, 28, 11, 10307806, '10');
分别指定了开奖号,开奖日期,七个色球号码(依次是六个红色球和一个蓝色球),当期销售额,以及特别(例如“快乐星期天”)奖号码。

 

点击这里可以看到运行效果:http://www.geofuture.net/dev/welfare.php。源代码可以从这里下载:http://www.geofuture.net/dev/welfare.txt (包括各期开奖号)