一个根据双色球历史数据预测未来中奖号码的Java程序

简介: 一个根据双色球历史数据预测未来中奖号码的Java程序
package ball;
public class Configuration
{
  static public int MaxDigit = 7;
}
package ball;
public class HistoryRecordEntry 
{
  private int[] Number;
  public HistoryRecordEntry()
  {
    Number = new int[Configuration.MaxDigit];
  }
  public int getNumberFromDigit(int Digit)
  {
    return Number[Digit];
  }
  public void fillData(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7 )
  {
    Number[0] = arg1;
    Number[1] = arg2;
    Number[2] = arg3;
    Number[3] = arg4;
    Number[4] = arg5;
    Number[5] = arg6;
    Number[6] = arg7;
  }
}
package ball;
public class MainFrame
{
  @SuppressWarnings("unused")
  public static void main(String[] args) 
  {
    Processor processor = new Processor();
    HistoryRecordEntry entry = new HistoryRecordEntry();
    // fill history data
    //2003001
    processor.insert(10, 11, 12, 13, 26, 28, 11);
    processor.insert( 4,  9, 19, 20, 21, 26, 12);
    processor.insert( 1,  7, 10, 23, 28, 32, 16);
    processor.insert( 4,  6,  7, 10, 13, 25,  3);
    processor.insert( 4,  6, 15, 17, 30, 31, 16);
    processor.insert( 1,  3, 10, 21, 26, 27,  6);
    processor.insert( 1,  9, 19, 21, 23, 26,  7);
    processor.insert( 5,  8,  9, 14, 17, 23,  8);
    processor.insert( 5,  9, 18, 20, 22, 30,  9);
    processor.insert( 1,  2,  8, 13, 17, 24, 13);
    processor.insert( 4,  5, 11, 12, 30, 32, 15);
    processor.insert( 2, 12, 16, 17, 27, 30, 12); // 2003012
    processor.insert( 8, 13, 17, 21, 23, 32, 12);
    processor.insert( 3,  5,  7,  8, 21, 31,  2);
    processor.insert( 4, 11, 19, 25, 26, 32, 13);
    processor.insert(11, 17, 28, 30, 31, 33,  6);
    processor.insert( 5,  8, 18, 23, 25, 31,  6); // 2003017
    System.out.println("Current Number: " + processor.getTotalRecordNumber());
    processor.start();
  }
}
package ball;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Vector;
import java.util.Map.Entry;
/* example: 13 occurs 15 time
 *      2  occurs 12 time
 */
public class OccuranceForEachNumber
{
  private HashMap<Integer,Integer> OccuranceEachDigit = null;
  private HashMap<Integer,Vector<Integer>> CondensedOccurance = null;
  public OccuranceForEachNumber()
  {
    OccuranceEachDigit = new HashMap<Integer,Integer>();
  }
  public boolean isNumberExist(int Number)
  {
    return OccuranceEachDigit.containsKey(Number);
  }
  public void updateNumberOccurance(int Number)
  {
    int CurrentOccurance = OccuranceEachDigit.get(Number);
    CurrentOccurance++;
    OccuranceEachDigit.put(Number,CurrentOccurance);
  }
  public void initialNumberOccurance(int Number)
  {
    OccuranceEachDigit.put(Number, 1);
  }
  public void ListOccuranceForEachNumber()
  {
    Set<Entry<Integer, Integer>> set = OccuranceEachDigit.entrySet();
    Iterator<Entry<Integer, Integer>> itor = set.iterator();
    while(itor.hasNext())
    {
       Entry<Integer, Integer> entry = itor.next();
       int Digit = entry.getKey();
       System.out.println("Number: " + Digit + " Occurance: " +  entry.getValue() );       
    }
  }
  public void condense()
  {
    if (CondensedOccurance != null )
      CondensedOccurance.clear();
    CondensedOccurance = new HashMap<Integer,Vector<Integer>>();
    Set<Entry<Integer, Integer>> set = OccuranceEachDigit.entrySet();
    Iterator<Entry<Integer, Integer>> itor = set.iterator();
    while(itor.hasNext())
    {
      Entry<Integer, Integer> entry = itor.next();
      int NumberwithOccurance = entry.getKey();
      int Occurance = entry.getValue();
      if( CondensedOccurance.containsKey(entry.getValue()) == false)
      {
        Vector<Integer> NumberListWithSameOccurance = new Vector<Integer>();  
        NumberListWithSameOccurance.add(NumberwithOccurance);
        CondensedOccurance.put(Occurance, NumberListWithSameOccurance);
      }
      else
      {
        Vector<Integer> existingNumberList = CondensedOccurance.get(Occurance);
        existingNumberList.add(NumberwithOccurance);
        CondensedOccurance.put(Occurance, existingNumberList);
      }
    }
    Set<Entry<Integer, Vector<Integer>>> Revertset = CondensedOccurance.entrySet();
    Iterator<Entry<Integer, Vector<Integer>>> Revertitor = Revertset.iterator();
    while(Revertitor.hasNext())
    {
      Entry<Integer, Vector<Integer>> entry = Revertitor.next();
      System.out.println("Occruance: " + entry.getKey());
      for( int i = 0 ; i < entry.getValue().size(); i ++)
      {
        System.out.println("Number with same Occurance: " + entry.getValue().elementAt(i));
      }
    }
  }
}
package ball;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Map.Entry;
public class OccuranceOverview
{
  private HashMap<Integer,OccuranceForEachNumber> OccuranceOverview = null;
  public OccuranceOverview()
  {
    OccuranceOverview = new HashMap<Integer,OccuranceForEachNumber>();
    for ( int i = 0 ; i < Configuration.MaxDigit; i++ )
    {
      OccuranceForEachNumber Occurance4EachNumber = new OccuranceForEachNumber();
      OccuranceOverview.put(i,Occurance4EachNumber);
    }
  }
  public OccuranceForEachNumber getOccuranceInstanceByDigit(int Digit)
  {
    return OccuranceOverview.get(Digit);
  }
  public void updateDigitOccurance(int Digit,OccuranceForEachNumber OccuranceInstance)
  {
    OccuranceOverview.put(Digit, OccuranceInstance);
  }
  public void listOccuranceForEachDigit()
  {
    Set<Entry<Integer, OccuranceForEachNumber>> set = OccuranceOverview.entrySet();
    Iterator<Entry<Integer, OccuranceForEachNumber>> itor = set.iterator();
    while(itor.hasNext())
    {
       Entry<Integer, OccuranceForEachNumber> entry = itor.next();
       int Digit = entry.getKey();
       System.out.println("**************** Digit: " + Digit + " Information Begin! *************");
       entry.getValue().ListOccuranceForEachNumber();
       System.out.println("**************** Condensed Information! **********");
       entry.getValue().condense();
    }
  }
}
package ball;
import java.util.Vector;
public class Processor
{
  private Vector<HistoryRecordEntry> RecordList = null;
  public Processor()
  {
    RecordList = new Vector<HistoryRecordEntry>();
  }
  public void insert(int arg1, int arg2,int arg3,int arg4,int arg5,int arg6, int arg7)
  {
    HistoryRecordEntry entry = new HistoryRecordEntry();
    entry.fillData(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
    RecordList.add(entry);
  }
  public int getTotalRecordNumber()
  {
    return RecordList.size();
  }
  public void start()
  {
    OccuranceForEachNumber Occurance4EachNumber = null;
    OccuranceOverview OccuranceOverviewTool = new OccuranceOverview();
    for ( int i = 0 ; i < RecordList.size(); i++)
    {
      HistoryRecordEntry entry = RecordList.get(i);
      for( int j = 0; j < Configuration.MaxDigit; j++) // 0 ~6 
      {
        int NumberPerDigit = entry.getNumberFromDigit(j); // example digit 0 number 9
        Occurance4EachNumber = OccuranceOverviewTool.getOccuranceInstanceByDigit(j);
        if ( Occurance4EachNumber.isNumberExist(NumberPerDigit) == true )
        {
          Occurance4EachNumber.updateNumberOccurance(NumberPerDigit);
        }
        else
        {
          Occurance4EachNumber.initialNumberOccurance(NumberPerDigit);
        }
        OccuranceOverviewTool.updateDigitOccurance(j,Occurance4EachNumber);
      }
    }
    OccuranceOverviewTool.listOccuranceForEachDigit();
  }
}


相关文章
|
7天前
|
XML 存储 JSON
Java程序部署
Java程序部署
|
8天前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
18 5
|
7天前
|
安全 Java 开发者
Java修饰符与封装:理解访问权限、行为控制与数据隐藏的重要性
Java中的修饰符和封装概念是构建健壯、易维护和扩展的Java应用程序的基石。通过合理利用访问权限修饰符和非访问修饰符,开发者能够设计出更加安全、灵活且高效的代码结构。封装不仅是面向对象编程的核心原则之一,也是提高软件项目质量和可维护性的关键策略。
10 1
|
9天前
|
Java 编译器 数据库连接
探索Java中的异常处理:提升程序的鲁棒性
【9月更文挑战第25天】在Java的世界里,异常是那些不请自来、令人头疼的“客人”。它们悄无声息地潜入我们的代码,一旦出现,便可能导致程序崩溃或行为异常。但是,如果能够妥善管理这些异常,我们就能将潜在的灾难转变为增强程序鲁棒性和用户体验的机会。本文将通过深入浅出的方式,带领读者理解Java异常处理的重要性,并提供实用的策略来优雅地处理这些意外情况。让我们一起学习如何在Java中捕捉、处理和预防异常,确保我们的程序即使在面对不可预见的错误时也能保持稳健运行。
|
15天前
|
监控 Java 数据库
Java程序如何进行不停机更新?
Java程序如何进行不停机更新?
17 1
|
1月前
|
缓存 监控 安全
如何提高 Java 高并发程序的性能?
以下是提升Java高并发程序性能的方法:优化线程池设置,减少锁竞争,使用读写锁和无锁数据结构。利用缓存减少重复计算和数据库查询,并优化数据库操作,采用连接池和分库分表策略。应用异步处理,选择合适的数据结构如`ConcurrentHashMap`。复用对象和资源,使用工具监控性能并定期审查代码,遵循良好编程规范。
|
1月前
|
Java API 开发者
代码小妙招:用Java轻松获取List交集数据
在Java中获取两个 `List`的交集可以通过 `retainAll`方法和Java 8引入的流操作来实现。使用 `retainAll`方法更为直接,但会修改原始 `List`的内容。而使用流则提供了不修改原始 `List`、更为灵活的处理方式。开发者可以根据具体的需求和场景,选择最适合的方法来实现。了解和掌握这些方法,能够帮助开发者在实际开发中更高效地处理集合相关的问题。
29 1
|
2月前
|
监控 Java 开发工具
【事件中心 Azure Event Hub】Event Hub Java SDK的消费端出现不消费某一个分区中数据的情况,出现IdleTimerExpired错误消息记录
【事件中心 Azure Event Hub】Event Hub Java SDK的消费端出现不消费某一个分区中数据的情况,出现IdleTimerExpired错误消息记录
|
2月前
|
存储 Java Apache
|
2月前
|
开发者 Java Spring
【绝技揭秘】掌握Vaadin数据绑定:一键同步Java对象,告别手动数据烦恼,轻松玩转Web应用开发!
【8月更文挑战第31天】Vaadin不仅是一个功能丰富的Java Web应用框架,还提供了强大的数据绑定机制,使开发者能轻松连接UI组件与后端Java对象,简化Web应用开发流程。本文通过创建一个简单的用户信息表单示例,详细介绍了如何使用Vaadin的`Binder`类实现数据绑定,包括字段与模型属性的双向绑定及数据验证。通过这个示例,开发者可以更专注于业务逻辑而非繁琐的数据同步工作,提高开发效率和应用可维护性。
51 0
下一篇
无影云桌面