java模拟双色球统计红球篮球出号
2013-01-10 14:18
281 查看
本人由于连续多个月买双色球未中,气愤之下突发奇想,自己写了个双色球统计算法(菜鸟写得不好忘包涵)
该功能只是程序自动生成的选号,原本打算用网络爬虫来从360彩票网站爬取数据。即从360网站彩票随机工具随机生成100-10000注号码,然后爬到数据在进行统计(把出现频率最高和最低的号码剔除,以便能更准确的选择胆码。当然,这只是个人想法。呵呵,毕竟不会让这么多人随机中的(逆向思维,看着搞笑的别碰))可是苦于技术不牛而只能自己手动生成号码。
代码如下:
package exercise3; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Random; import java.util.Set; public class Test { public static void main(String[] args) { // int[] red = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, // 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, // 33 }; // int[] blue = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 // }; int[] red = { 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 };// 杀码过滤后可能红球 int[] blue = { 1, 3, 4, 6, 7, 9, 10, 11, 12, 13 };// 杀码过滤后可能篮球 List<Map<String, Integer>> l = new ArrayList<Map<String, Integer>>(); System.out.println(new SimpleDateFormat("yyyy/MM/dd hh:MM:ss") .format(new Date())); for (int k = 0; k < 100; k++) { int ball[] = new int[7]; Map<String, Integer> m = new HashMap<String, Integer>(); for (int i = 0; i < ball.length - 1; i++) { int index = new Random().nextInt(29);// 红球杀去4个码 ball[i] = red[index]; for (int j = 0; j < i; j++) { if (ball[j] == ball[i]) { i--; break; } } m.put("红球" + (i + 1), ball[i]); } ball[6] = blue[new Random().nextInt(10)];// 篮球杀去6个码 m.put("篮球7", ball[6]); l.add(m); } Map<String, Integer> count = new HashMap<String, Integer>(); for (Map<String, Integer> map : l) { for (int mm = 1; mm <= 7; mm++) { String str = mm <= 6 ? "红球" : "篮球"; String next = mm <= 6 ? "红球" : "篮球"; str = str + mm; Integer ii = count.get(next + map.get(str)); Integer num = ii; if (num == null) { num = 0; } String color = mm <= 6 ? "红球" : "篮球"; color += map.get(str); count.put(color, num + 1); } } hashMapSort(count); // Set<Entry<String, Integer>> entrys = count.entrySet(); // for (Iterator<Map.Entry<String, Integer>> // iter=entrys.iterator();iter.hasNext();) { // Map.Entry<String, Integer> entry = iter.next(); // System.out.println(entry.getKey() + ":" + entry.getValue()); // } System.out.println(new SimpleDateFormat("yyyy/MM/dd hh:MM:ss") .format(new Date())); } // 对HashMap(或Hashtable,LinkedHashMap)按照value的值升序: public static void hashMapSort(Map<String, Integer> map) { List<Map.Entry<String, Integer>> mappingList = null; // 通过ArrayList构造函数把map.entrySet()转换成list mappingList = new ArrayList<Map.Entry<String, Integer>>(map.entrySet()); // 通过比较器实现比较排序 Collections.sort(mappingList, new Comparator<Map.Entry<String, Integer>>() { public int compare(Map.Entry<String, Integer> mapping1, Map.Entry<String, Integer> mapping2) { return mapping1.getValue().compareTo( mapping2.getValue()); } }); // for (Map.Entry<String, Integer> mapping : mappingList) { // System.out.println(mapping.getKey() + ":" + mapping.getValue()); // } for (int i = 0; i < mappingList.size(); i++) { Map.Entry<String, Integer> mapping = mappingList.get(i); System.out.print(mapping.getKey() + ":" + mapping.getValue() + "\t\t"); if (i % 3 == 2) { System.out.println(); } } System.out.println(); }
}
如果有大牛看到,莫要嘲笑小弟。小弟也是鼓着勇气写的文章~
模拟100注统计结果
模拟1000注统计结果
当数据量很大的时候,基本每个号码都趋于稳定。这就是出现的频率近似概率的结果了
相关文章推荐
- 用Java做的模拟“双色球”机选号码
- Java小程序:模拟双色球开奖
- javase 双色球选7球 红球在【1-36】之间,选出6个,且不能重复 篮球在【1-16】之间,选出1个
- 双色球Java模拟
- java 多线程协作 模拟四台电梯的工作状态并统计每层上下楼人数和输出上下楼日志到文件
- java 随机数 模拟双色球开奖
- 用Shell实现双色球 随机生成篮球 红球的脚本.
- java简单实现双色球彩票模拟实例(数组、排序、方法、随机数、键盘输入)
- java模拟双色球彩票程序
- 双色球6+1Java模拟
- python数据分析2:双色球 蓝红球分析统计
- Python数据分析之双色球中蓝红球分析统计示例
- java笔记之 - 随机双色球 红球
- Java模拟双色球的产生过程
- 统计双色球红球出现概率的程序(10000次实验)
- JavaScript中模拟java的map键值统计一段英文中各个单词出现的次数
- java随机数(模拟双色球小程序)
- 模拟双色球彩票开奖结果:随机生成一注双色球彩票,判断其是否中奖,奖金为多少。
- 利用C语言结构体模拟一个简单的JavaBean
- CSDN JAVA版主老紫竹的一段模拟买火车票的多线程代码(转)