用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

双色球开奖预测软件源码(基于遗传算法)

2014-04-08 作者: 小蜜锋举报

[c++]代码库

BOOL CAboutDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	
	SetDlgItemText(IDC_EDIT1,"声明:本程序采用历史开奖记录,用遗传算法计算下期可能出现的红色球号码和兰色球号码.本人不负责使用本程序引起的连带责任.");
	
	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}


void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CShuangSeQiuDlg dialog

CShuangSeQiuDlg::CShuangSeQiuDlg(CWnd* pParent /*=NULL*/)
: CDialog(CShuangSeQiuDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CShuangSeQiuDlg)
	// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CShuangSeQiuDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CShuangSeQiuDlg)
	DDX_Control(pDX, IDC_CODELIST, m_list);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CShuangSeQiuDlg, CDialog)
//{{AFX_MSG_MAP(CShuangSeQiuDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BTN_YUCE, OnBtnYuce)
ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
ON_BN_CLICKED(IDC_BTN_VIEWHISTORY, OnBtnViewhistory)
ON_BN_CLICKED(IDC_BTN_SAVE, OnBtnSave)
ON_BN_CLICKED(IDC_BTN_HISTORYSTAT, OnBtnHistorystat)
ON_NOTIFY(NM_CLICK, IDC_CODELIST, OnClickCodelist)
ON_BN_CLICKED(IDC_BTN_HISTORY, OnBtnHistory)
ON_BN_CLICKED(IDC_BTN_DELETE, OnBtnDelete)
//}}AFX_MSG_MAP
ON_NOTIFY (NM_CUSTOMDRAW, IDC_CODELIST, OnCustomdrawMyList)

ON_MESSAGE(WM_VALIDATE, OnEndLabelEditVariableCriteria) //添加的自定义的消息
ON_MESSAGE(WM_SET_ITEMS, PopulateComboList)

END_MESSAGE_MAP()
BOOL CShuangSeQiuDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	//skinppLoadSkin("AquaOS.ssk");
	skinppLoadSkin("MAC.ssk");
	
	
	// Add "About..." menu item to system menu.
	
	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);
	
	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}
	
	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	
	
	m_list.EnableVScroll(); 
	m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);	
	m_list.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);	
	
	
	
	m_list.InsertColumn(0,_T("ID"),LVCFMT_LEFT,30);
	m_list.InsertColumn(1,_T("红1"),LVCFMT_LEFT,40);
	m_list.InsertColumn(2,_T("红2"),LVCFMT_LEFT,40);
	m_list.InsertColumn(3,_T("红3"),LVCFMT_LEFT,40);
	m_list.InsertColumn(4,_T("红4"),LVCFMT_LEFT,40);
	m_list.InsertColumn(5,_T("红5"),LVCFMT_LEFT,40);
	m_list.InsertColumn(6,_T("红6"),LVCFMT_LEFT,40);
	
	m_list.InsertColumn(7,_T("蓝"),LVCFMT_LEFT,40);
	
	
	line = 0;
	yuce = 0;
	
	//初始化变量
	initVar();
	
	//读历史数据
	ReadHistroy();
	
	CString strValidChars;//	
	m_list.SetReadOnlyColumns(0);//read only
	
	strValidChars = "0123456789";
	m_list.SetColumnValidEditCtrlCharacters(strValidChars,1);//digital only edit
	m_list.SetColumnValidEditCtrlCharacters(strValidChars,2);//digital only edit
	m_list.SetColumnValidEditCtrlCharacters(strValidChars,3);//digital only edit
	m_list.SetColumnValidEditCtrlCharacters(strValidChars,4);//digital only edit
	m_list.SetColumnValidEditCtrlCharacters(strValidChars,5);//digital only edit
	m_list.SetColumnValidEditCtrlCharacters(strValidChars,6);//digital only edit
	m_list.SetColumnValidEditCtrlCharacters(strValidChars,7);//digital only edit
	
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CShuangSeQiuDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}




// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CShuangSeQiuDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting
		
		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
		
		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;
		
		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}



// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CShuangSeQiuDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}


//初始化变量
void CShuangSeQiuDlg::initVar()
{
	
	for(int i=0;i<6;i++){
		red[i] ="";
	}
	
	blue="";		//已经蓝球
	
	for(int r=0;r<34;r++){
		StatRed[r] =0;		//红球累计
		StatRedRate[r] = 0.0;		//红球累计率
		
		sn[r] = r;
	}
	
	for(int b=0;b<17;b++){
		StatBlue[b] =0;				//蓝球累计	
		StatBlueRate[b] = 0.0;		//蓝球累计率
	}
	
	int dd = 0;
	deleteflag = false;
	totalsn = 0;
	popnum = 20;
	//为预报工作作一些初始化
	for(int item=0;item<popnum;item++)
	{
		for(int r=0;r<6;r++)
			ItemCountRed[item][r]=0;
		ItemCountBlue[item]=0;
		ItemCountRedRate[item] =0;
	}
	MAXRATE = 20;	//rate 排序前max的值
	thebest =0;		
	yecefail = true;
}

//读历史数据
void CShuangSeQiuDlg::ReadHistroy()
{
	CHistoryReorcd chr;
	CString path = chr.GetCurPath();
	CString filename = path+ "\\history.txt";
	line = chr.GetFileLine(filename);
	//分析每一行的数据,根据不同的内容,把值分到不同的数组中.
	for(int i=1;i<=line;i++){
		CString linestr= chr.GetLineActionFile(filename,i);
		int sub = linestr.Find(":",0);
		CString codestr = linestr.Mid(sub+1);
		CSpliter cSpliter;
		cSpliter.setdata(codestr);
		cSpliter.setsplitflag(",");
		CStringArray a;
		cSpliter.getsplitstrarray(a);
		int number_red=0;
		for(int r=0;r<6;r++){
			number_red = atoi(a.GetAt(r));
			StatRed[number_red] ++;
		}
		//把最后两期的号赋到全局数组中,以供预测时候比较.
		if(i == line-1){	
			for(int p=0;p<6;p++)
			{		
				int sn =p;
				passval[sn] = atoi(a.GetAt(p));
			}
		}else if (i == line){	
			for(int p=0;p<6;p++)
			{	
				int sn = 6+p;
				passval[sn] = atoi(a.GetAt(p));
			}
		}
		int number_blue = atoi(a.GetAt(6));
		StatBlue[number_blue] ++;
	}
	float RedTotolTime  = (float)6*line;		//红球总出现次数
	float BlueTotolTime = (float)line;			//蓝球总出现次数
	//计算机率
	for(int rr=1;rr<34;rr++){
		StatRedRate[rr] = (float)StatRed[rr] /	RedTotolTime;			//红球累计率
	}
	for(int br=1;br<17;br++){
		StatBlueRate[br] = (float)StatBlue[br] /BlueTotolTime;			//蓝球累计率
	}
}

void CShuangSeQiuDlg::OnBtnYuce() 
{
	yecefail = true;
	while(yecefail)
	{
		//通过算法得到数值
		GAStudy();
		UpdateData(TRUE);
		int i =m_list.GetItemCount();
		CString str;
		str.Format("%d",totalsn+1);
		if (!yecefail)
		{
			SetDlgItemText(IDC_STATIC_INFO,"信息:这是个可选号码!" );
			m_list.InsertItem(LVIF_TEXT|LVIF_STATE, i+1, str, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED, 0, 0);
		}
		if (!yecefail)
		{	
			int array[7];
			bool shaixuan[33]={false};
			for(int sub=0;sub<6;sub++)
			{
				array[sub+1]=sn[ItemCountRed[thebest][sub]];
				int idx=array[sub+1];
				while(shaixuan[idx-1])
				{
					idx=idx%33+1;
					array[sub+1]=idx;
				}
				shaixuan[idx-1]=true;
			}
			QuickSort(array,1,6);
			for(sub=1;sub<7;sub++)
			{
				CString s;	
				s.Format("%d" ,array[sub]); 	
				m_list.SetItemText(i,sub,s);
			}
			int blue = rand()%16 + 1;
			CString bstr;
			bstr.Format("%d",blue);
			//兰色球号码,没有怎么做,随机了一个兰色球,哈...
			m_list.SetItemText(i,7,_T(bstr));
			totalsn++;
		}
		UpdateData(FALSE);	
	}
}

//开始GA学习
void CShuangSeQiuDlg::GAStudy()
{	
	
	initpop();				//初始化种群
	int train_count =0;
	int totalval =118;		//累加和
	
    int bubiaole =0;
	int pre = 0;
	
	while( totalval < 75  || totalval > 125  ||  train_count< 10  )
	{
		totalval = 0;			//初始化为0
		
		train_count++;			//下一代
		
		ComputeFit();			//计算适应度
		
		SelectAndDeletePop();	//选择和淘汰种群
		
		CrossPop();				//交叉操作
		
		Mutation();		        //变异操作
		
		thebest = GetResult();	//得到最优种群ID
		
		int val[6] ={0};
		
		for(int i=0;i<6;i++){
			val[i] = sn[ItemCountRed[thebest][i]];
			totalval = totalval + val[i];
		}
		
		if (pre == totalval){
			bubiaole ++;
		}else{
			pre = totalval;
		}
		
		if (bubiaole>10){
			//AfxMessageBox("出现不推荐号码已跳过,请继续预测!");
			SetDlgItemText(IDC_STATIC_INFO,"信息:出现不推荐号码已跳过,系统继续预测中......" );
			yecefail = true;
			break;
		}else{
			yecefail = false;
		}
		
		//比较与上两期差别
		int samecount =0;
		for(i=0;i<6;i++){
			for(int sn=0;sn<12;sn++){
				if(	val[i] == passval[sn] ){
					samecount ++ ;
					if (samecount > 2 ){	//如果大于两个则,放弃这个预测					
						yecefail = true;
						SetDlgItemText(IDC_STATIC_INFO,"信息:与上两期相似号跳过,系统继续预测中......" );
						break;
					}else{
						yecefail = false;
					}
				}
			}
		}
		
		int dd = 0;
		
	}
	
}

//初始化种群
void CShuangSeQiuDlg::initpop()
{
	//排序
	int tmp=0;
	
	for(int i=1;i<34;i++){
		for(int j=i+1;j<34;j++) 
			if(	StatRedRate[sn[i]]  < StatRedRate[sn[j]] ) {
				tmp = sn[i];
				sn[i]= sn[j];
				sn[j] = tmp;				
			}
	}
	
	
	//间接排序问题
	/*
	CStdioFile file; 
	file.Open("sort.txt",CFile::modeCreate|CFile::modeReadWrite); 
	
	  int len = 34;
	  for(i=1;i<len ;i++){
	  CString rate,ratelist;
	  ratelist.Format("%.8f",StatRedRate[sn[i]]);
	  rate.Format("%d --",sn[i]);
	  rate = rate + ratelist;
	  file.WriteString(rate);
	  file.WriteString("\n");
	  }
	  file.Close();
	*/
	
	
	srand(time(0));/*设置种子,并生成伪随机序列*/ 
	for(int pop=0;pop<popnum;pop++){
		for(int j=0;j<6;j++){
			bool same = true;
			
			int r =0;
			int min = 1;
			
			int diff=0;
			while(same){
				r = rand()%(MAXRATE) + min;
				for(int next=0 ;next<6; next++){
					if (r == ItemCountRed[pop][next] ){
						same =true;
						diff= 0;
						break;
					}else{
						diff ++;
					}
				}
				if (diff >= 5){
					same = false;
				}
			}
			ItemCountRed[pop][j] = r;	
		}
	}	
	
	CStdioFile file; 
	file.Open("pop.txt",CFile::modeCreate|CFile::modeReadWrite); 
	for(i=0;i<popnum ;i++){
		CString popn="";
		
		for(int j=0;j<6;j++){			
			CString nextp="";
			nextp.Format("%d",sn[ItemCountRed[i][j]] );   //相当于rate.Format("%d --",sn[i]);
			popn = popn + " " + nextp;
			
		}
		file.WriteString(popn);
		file.WriteString("\n");
	}
	file.Close();
	
	
}


//计算适应度
void CShuangSeQiuDlg::ComputeFit()
{
	for(int pop=0;pop<popnum;pop++){
		for(int j=0;j<6;j++){
			int cur = sn[ItemCountRed[pop][j]] ;
			ItemCountRedRate[pop] =ItemCountRedRate[pop] + StatRedRate[cur] ;
		}		
	}
	
	
	CStdioFile file; 
	file.Open("poprate.txt",CFile::modeCreate|CFile::modeReadWrite); 
	for(int i=0;i<popnum ;i++){
		CString popn="";
		popn.Format("%.8f",ItemCountRedRate[i]);
		file.WriteString(popn);
		file.WriteString("\n");
	}
	file.Close();
}



//选择和淘汰种群
void CShuangSeQiuDlg::SelectAndDeletePop()
{
	float maxrate =0;
	float minrate =1000; 
	
	
	for(int i=0;i<popnum ;i++){
		if (ItemCountRedRate[i] > maxrate){
			maxindex = i;
			maxrate = ItemCountRedRate[i] ;
		}
		if (ItemCountRedRate[i] < minrate){
			minindex = i;
			minrate = ItemCountRedRate[i] ;
		}
	}
	
	CStdioFile file; 
	
	CFileStatus   fs;   
	if(!CFile::GetStatus(_T("popselect.txt"),fs))   
	{   		
		file.Open("popselect.txt",CFile::modeCreate|CFile::modeReadWrite); 
	}else{
		file.Open("popselect.txt",CFile::modeReadWrite); 
	}
	
	
	
	
	file.SeekToEnd();
	
	CString maxindexstr="";
	maxindexstr.Format("%d 最优的种群ID",maxindex);
	file.WriteString(maxindexstr);
	file.WriteString("\n");
	
	CString minindexstr="";
	minindexstr.Format("%d 最差的种群ID",minindex);
	file.WriteString(minindexstr);
	file.WriteString("\n");
	
	file.Close();
	
}

//交叉操作
void CShuangSeQiuDlg::CrossPop()
{
	srand(time(0));
	int min =0;
	int r = 0;		//随机一个种群号
	
	CStdioFile file; 
	file.Open("CrossPop.txt",CFile::modeCreate|CFile::modeReadWrite); 
	
	file.SeekToEnd();
	
	CString rr="";
	rr.Format("%d",minindex);
	CString crossstr="最差的 minindex=" + rr + "\n";
	
	for(int i=0;i<6;i++){
		CString s="";
		s.Format("%d" ,sn[ ItemCountRed[minindex][i] ]); 
		crossstr = crossstr + s  + " ";
	}
	file.WriteString(crossstr);
	file.WriteString("\n");
	
	
	bool nextthreesame = true;
	
	//如果随机的后三位和最优的前三位不同就可以
	while(nextthreesame){
		r = rand()%(popnum) + min;	//从种群20中随机一个种群号
		int cuti= 3;
		int cutb =0;
		for(cuti=3;cuti<6;cuti++){	//随机的后三位
			for(cutb=0;cutb<3;cutb++){//最优的前三位比较
				if(sn[ ItemCountRed[r][cuti] ] == sn[ ItemCountRed[maxindex][cutb] ]){
					nextthreesame = true;		//有相同的,则要重新找随机种群
					break;
				}
			}
		}
		if(cuti == 6 && cutb == 3){
			nextthreesame = false;
		}
	}
	
	
	//用最好的种群和随机的种群进行杂交,替换最差的种群的前三位值
	for(int cutb=0;cutb<3;cutb++){
		ItemCountRed[minindex][cutb] = ItemCountRed[maxindex][cutb] ;
	}
	
	for(int cuti=3;cuti<6;cuti++){
		ItemCountRed[minindex][cuti] = ItemCountRed[r][cuti] ;
	}
	
	
	rr.Format("%d",r);
	crossstr="随机 r=" + rr + "\n";
	for(i=0;i<6;i++){
		CString s="";
		s.Format("%d" ,sn[ ItemCountRed[r][i] ]); 
		crossstr = crossstr + s+ " ";
	}
	file.WriteString(crossstr);
	file.WriteString("\n");
	
	rr.Format("%d",maxindex);
	crossstr="最好的 maxindex=" + rr + "\n";
	for(i=0;i<6;i++){
		CString s="";
		s.Format("%d" ,sn[ ItemCountRed[maxindex][i] ]); 
		crossstr = crossstr + s + " ";
	}
	file.WriteString(crossstr);
	file.WriteString("\n");
	
	rr.Format("%d",minindex);
	crossstr="新的 minindex=" + rr + "\n";
	for(i=0;i<6;i++){
		CString s="";
		s.Format("%d" ,sn[ ItemCountRed[minindex][i] ]); 
		crossstr = crossstr + s + " ";
	}
	file.WriteString(crossstr);
	file.WriteString("\n");
	
	file.Close();
	
}


//变异操作	
void CShuangSeQiuDlg::Mutation()
{
	
	float r = (float)rand()/65535 ;
	int min =0;
	int	opindex = 0;
	
	if(r<0.4){
		opindex = rand()%(MAXRATE) + min;		//从最优号码里面选一个号
		ItemCountRed[minindex][0] = opindex;
	}else if (r<0.8){
		opindex = rand()%(33) + min;			//从全部号里面选一个号
		ItemCountRed[minindex][5] = opindex;
	}else{
		opindex = rand()%(33) + MAXRATE;		//从最差号中选一个号
		ItemCountRed[minindex][5] = opindex;
	}
	
	
	
	CStdioFile file; 
	file.Open("Mutation.txt",CFile::modeCreate|CFile::modeReadWrite); 
	
	CString rr="";
	rr.Format("%.8f", r);
	CString crossstr="随机 r = " + rr + "\n";
	file.WriteString(crossstr);
	file.WriteString("\n");
	if(r<0.5){
		rr.Format("%d", opindex);
		crossstr="最优选号 opindex = " + rr + "\n";
		file.WriteString(crossstr);
		file.WriteString("\n");
	}else{
		rr.Format("%d", opindex);
		crossstr="全部选号 opindex = " + rr + "\n";
		file.WriteString(crossstr);
		file.WriteString("\n");
	}
	
	
	crossstr="变异后\n";
	for(int i=0;i<6;i++){
		CString s="";
		s.Format("%d" ,sn[ ItemCountRed[minindex][i] ]); 
		crossstr = crossstr + s + " ";
	}
	file.WriteString(crossstr);
	file.WriteString("\n");
	file.Close();
}

//得到最优的遗传结果
int CShuangSeQiuDlg::GetResult()
{
	int thebestpop =0;
	for(int pop=0;pop<popnum;pop++){
		ItemCountRedRate[pop] =0;
		for(int j=0;j<6;j++){
			int cur = sn[ItemCountRed[pop][j]] ;
			ItemCountRedRate[pop] =ItemCountRedRate[pop] + StatRedRate[cur] ;
		}		
	}
	
	CStdioFile file; 
	file.Open("poprateget.txt",CFile::modeCreate|CFile::modeReadWrite); 
	for(int i=0;i<popnum ;i++){
		CString popn="";
		popn.Format("%.8f",ItemCountRedRate[i]);
		file.WriteString(popn);
		file.WriteString("\n");
	}
	
	float maxrate =0;
	for(i=0;i<popnum ;i++){
		if (ItemCountRedRate[i] > maxrate){
			maxindex = i;
			maxrate = ItemCountRedRate[i] ;
		}
	}
	
	CString thebest = "";
	thebest.Format("%d",maxindex);
	file.WriteString(thebest);
	file.WriteString("\n");
	
	CString crossstr="最优的种群为:\n";
	for(i=0;i<6;i++){
		CString s="";
		s.Format("%d" ,sn[ItemCountRed[maxindex][i]]); 
		crossstr = crossstr + s + " ";
	}
	file.WriteString(crossstr);
	file.WriteString("\n");
	file.Close();
	thebestpop = maxindex;
	return thebestpop;
}


//新增历史
void CShuangSeQiuDlg::OnBtnAdd() 
{
	CAddHistoryDlg adddlg;
	if (adddlg.DoModal()){
		//重新初始化;
		initVar();
		//重新导入记录;
		ReadHistroy();
	}
}


//查看历史
void CShuangSeQiuDlg::OnBtnViewhistory() 
{
	WinExec("Notepad.exe history.txt", SW_SHOW);
}

//保存号码
void CShuangSeQiuDlg::OnBtnSave() 
{
	
	CStdioFile file; 
	file.Open("save.txt",CFile::modeCreate|CFile::modeReadWrite); 
	
	int len = m_list.GetItemCount();
	for(int i=0;i<len ;i++){
		CString codeline;
		for(int j=1;j<8;j++){
			CString code = m_list.GetItemText(i,j);
			codeline = codeline + code + "  ";
		}
		file.WriteString(codeline);
		file.WriteString("\n");
	}
	file.Close();
	
	WinExec("Notepad.exe save.txt", SW_SHOW);	
	
}

//历史统计
void CShuangSeQiuDlg::OnBtnHistorystat() 
{
	CStdioFile file; 
	file.Open("historystat.txt",CFile::modeCreate|CFile::modeReadWrite); 
	
	CString redt;
	redt.Format("%d",line);
	
	CString rss = "现在总期数 " + redt+ "期.\n" ;
	
	
	file.WriteString(rss);
	
	for(int r =1;r<34;r++){		
		CString rstr,rn;
		rstr.Format("%d",r);
		rn.Format("%d",StatRed[r]);
		CString rp = "红" + rstr + " 出现 " + rn+ "次.";
		
		CString redrate;
		redrate.Format("%.8f",StatRedRate[r]);
		rp = rp + " 出现率为" + redrate + "\n";
		
		file.WriteString(rp);
	}	
	
	file.WriteString("\n***********************\n");
	
	CString bluet;
	bluet.Format("%d",line);
	CString bss = "兰球共出现 " + bluet+ "次.\n" ;
	file.WriteString(bss);
	
	for(int b=1;b<17;b++){		
		CString bstr,bn;
		bstr.Format("%d",b);
		bn.Format("%d",StatBlue[b]);
		CString bp = "兰" + bstr + " 出现 " + bn+ "次.";
		CString bluerate;
		bluerate.Format("%.8f",StatBlueRate[b]);
		bp = bp + " 出现率为" + bluerate + "\n";
		file.WriteString(bp);
	}
	
	
	file.Close();
	WinExec("Notepad.exe historystat.txt", SW_SHOW);	
	
}

[代码运行效果截图]


双色球开奖预测软件源码(基于遗传算法)

[源代码打包下载]




网友评论    (发表评论)

共27 条评论 2/2页 <   1  2

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...