📄 childview.cpp
字号:
between1020++;
greate15++;
}
if (lty.i[j] > 20 && lty.i[j] < 31)
{
between2030++;
greate15++;
}
}
}
CString str;
str="┏━━━━━━━━━━┓";
pListBox->AddString(str);
str="┠ 分段统计结果 ┨";
pListBox->AddString(str);
str="┗━━━━━━━━━━┛";
pListBox->AddString(str);
CString strSeg;
strSeg.Format(" < 15: %5d %3.1f%%",less15,(float)less15/(float)count/8.0*100);
pListBox->AddString(strSeg);
strSeg.Format(" >=15: %5d %3.1f%%",greate15,(float)greate15/(float)count/8.0*100);
pListBox->AddString(strSeg);
strSeg.Format("20-30: %5d %3.1f%%",between2030,(float)between2030/(float)count/8.0*100);
pListBox->AddString(strSeg);
strSeg.Format("10-20: %5d %3.1f%%",between1020,(float)between1020/(float)count/8.0*100);
pListBox->AddString(strSeg);
strSeg.Format(" 1-10: %5d %3.1f%%",between010,(float)between010/(float)count/8.0*100);
pListBox->AddString(strSeg);
str="┏━━━━━━━━━━┓";
pListBox->AddString(str);
str="┠ AC统计结果 ┨";
pListBox->AddString(str);
str="┗━━━━━━━━━━┛";
pListBox->AddString(str);
for (i=0; i<30; i++)
{
if (acNumber[i]>0)
{
str.Format(" AC = %2d %4d 注",i,acNumber[i]);
pListBox->AddString(str);
}
}
str.Format(" Ave = %4.2f",dSum/count);
pListBox->AddString(str);
str="┏━━━━━━━━━━┓";
pListBox->AddString(str);
str="┠ AC值列表 ┨";
pListBox->AddString(str);
str="┗━━━━━━━━━━┛";
pListBox->AddString(str);
str=" 期号 AC值";
pListBox->AddString(str);
for ( i=iStart; i<iEnd+1; i++)
{
LOTTERY lty=m_array.GetAt(i);
int ac=lty.GetAC();
str.Format(" %d %4d",lty.t.t0,ac);
pListBox->AddString(str);
}
}
//------------------奇偶统计--------------------//
void CChildView::EvenOddStatistics(int iStart, int iEnd, CListBox *pListBox)
{
if (pListBox->GetCount())
pListBox->ResetContent();
{
int even=0,odd=0,s_even=0,s_odd=0;
int singleven[8];
int s_singleven[9];
ZeroMemory((void*)singleven,sizeof(int)*8);
ZeroMemory((void*)s_singleven,sizeof(int)*9);
int ItemCount=(iEnd - iStart) + 1;
for (int i=iStart; i<iEnd+1; i++)
{
LOTTERY lty=m_array.GetAt(i);
int e=0,s=0;
for (int j=1; j<8; j++)
{
if (lty.i[j]%2) {even++;s_even++;e++;s++;}
else {odd++;s_odd++;}
}
singleven[e]++;
if (lty.i[8]%2) {s_even++;s++;}
else {s_odd++;}
s_singleven[s]++;
}
CString str;
str="┏━━━━━━━━━━━━━━━━━━┓";
pListBox->AddString(str);
str="┠ 不含特别号码 ┨";
pListBox->AddString(str);
str="┗━━━━━━━━━━━━━━━━━━┛";
pListBox->AddString(str);
str.Format(" 偶/奇:%5d/%5d 理论概率 实际概率",odd,even);
pListBox->AddString(str);
for (i=0; i<8; i++)
{
str.Format("%3d奇%3d偶:%5d 注 %6.3f%% %6.3f%%",i,7-i,singleven[i],100.00*C_N_M(15,i)*C_N_M(15,7-i)/C_30_7,100.000*singleven[i]/m_array.GetSize());
pListBox->AddString(str);
}
str="┏━━━━━━━━━━━━━━━━━━┓";
pListBox->AddString(str);
str="┠ 包含特别号码 ┨";
pListBox->AddString(str);
str="┗━━━━━━━━━━━━━━━━━━┛";
pListBox->AddString(str);
str.Format(" 偶/奇:%5d/%5d 理论概率 实际概率",s_odd,s_even);
pListBox->AddString(str);
for (i=0; i<9; i++)
{
str.Format("%3d奇%3d偶:%5d 注 %6.3f%% %6.3f%%",i,8-i,s_singleven[i],100.00*C_N_M(15,i)*C_N_M(15,8-i)/C_30_8,100.000*s_singleven[i]/m_array.GetSize());
pListBox->AddString(str);
}
}
}
//------------------概率统计--------------------//
void CChildView::FrequencyStatistics(int iStart, int iEnd, CListCtrl *pListCtrl,CListBox *pListBox)
{
if (pListCtrl->GetItemCount())
pListCtrl->DeleteAllItems();
else
{
pListCtrl->InsertColumn(0,"号码",LVCFMT_CENTER,40);
pListCtrl->InsertColumn(1,"频率",LVCFMT_LEFT,40);
pListCtrl->InsertColumn(2," % ",LVCFMT_LEFT,45);
}
UINT freq[30];
ZeroMemory((BYTE*)freq,sizeof(UINT)*30);
int ItemCount=(iEnd - iStart) + 1;
LOTTERY lty;
for (int i=iStart; i<iEnd+1; i++)
{
lty=m_array.GetAt(i);
for (int j=1; j<9; j++)
{
freq[lty.i[j]-1]++;
}
}
if (pListBox)
{
CString strTemp;
for (int i=iStart; i<iEnd+1; i++)
{
UINT sum=0;
lty=m_array.GetAt(i);
for (int j=1; j<8; j++)
{
sum+=freq[lty.i[j]-1];
}
strTemp.Format("%d %5.3f",lty.t.t0,(double)sum/(double)ItemCount);
pListBox->AddString(strTemp);
}
for (i=0; i<30; i++)
{
m_dFreq[i]=((double)freq[i])/((double)ItemCount);
}
}
UINT number[30];
for (i=0; i<30; i++)
{
number[i]=i+1;
}
for (i=0; i<30; i++)
for (int j=i+1; j<30; j++)
{
if (freq[i]>freq[j])
{
UINT temp=freq[i];
freq[i]=freq[j];
freq[j]=temp;
temp=number[i];
number[i]=number[j];
number[j]=temp;
}
}
for (i=0; i<30; i++)
{
char text[5];
pListCtrl->InsertItem(0,NULL);
sprintf(text,"%2d\0",number[i]);
pListCtrl->SetItemText(0,0,text);
sprintf(text,"%d\0",freq[i]);
pListCtrl->SetItemText(0,1,text);
sprintf(text,"%04.3f\0",((float)freq[i]/(float)ItemCount));
pListCtrl->SetItemText(0,2,text);
}
}
//------------------概率统计--------------------//
void CChildView::FrequencyStatistics(int iStart, int order)
{
FREQUENCY *pFreq=&(m_pFreq[order]);
ZeroMemory((BYTE*)pFreq,sizeof(FREQUENCY));
LOTTERY lty;
for (unsigned int i=iStart; i<iStart+m_iWidth; i++)
{
lty=m_array.GetAt(i);
for (int j=1; j<9; j++)
{
pFreq->f[lty.i[j]-1]++;
}
}
if (iStart==0)
{//计算预测走向
ZeroMemory(&(m_pFreq[m_array.GetSize()]),sizeof(FREQUENCY));
for (unsigned int i=iStart; i<iStart+m_iWidth-1; i++)
{
lty=m_array.GetAt(i);
for (int j=1; j<9; j++)
{
m_pFreq[m_array.GetSize()].f[lty.i[j]-1]++;
}
}
}
}
//------------------概率统计--------------------//
void CChildView::FrequencyStatistics(int iStart, int iEnd,FREQUENCY *freq)
{
ZeroMemory((BYTE*)freq,sizeof(FREQUENCY));
LOTTERY lty;
for (int i=iStart; i<iStart+iEnd; i++)
{
lty=m_array.GetAt(i);
for (int j=1; j<9; j++)
{
freq->f[lty.i[j]-1]++;
}
}
}
//----------------相关统计-----------------//
void CChildView::RelationStatistics(int iStart, int iEnd, CListCtrl *pListCtrl)
{
if (pListCtrl->GetItemCount())
pListCtrl->DeleteAllItems();
else
{
pListCtrl->InsertColumn(0," ",LVCFMT_CENTER,20);
for (int i=1; i<31; i++)
{
CString str;
str.Format("%d",i);
pListCtrl->InsertColumn(i,str,LVCFMT_CENTER,25);
}
}
for (int i=0; i<30; i++)
{
CString str;
str.Format("%d",i+1);
pListCtrl->InsertItem(i,NULL);
pListCtrl->SetItemText(i,0,str);
}
UINT rel[31][31];
ZeroMemory(rel,sizeof(UINT)*31*31);
for (i=iStart; i<iEnd+1; i++)
{
LOTTERY lty=m_array.GetAt(i);
for (int j=1; j<9; j++)
{
for (int k=j+1; k<9; k++)
{
rel[lty.i[j]][lty.i[k]]++;
rel[lty.i[k]][lty.i[j]]++;
}
}
}
for (int j=1; j<31; j++)
{
for (int k=1; k<31; k++)
{
CString str;
str.Format("%d",rel[j][k]);
pListCtrl->SetItemText(j-1,k,str);
}
}
}
//----------------设置统计宽度(m_iWidth)-----------------//
void CChildView::OnSetupStatisticsNumber()
{
CDlgChoseNumber dlgChos;
if (IDOK==dlgChos.DoModal())
{
m_iWidth=atoi((char *)((const char *)(dlgChos.m_text)));
}
}
//----------------连字号统计-----------------//
void CChildView::ConntinuedNumber(int iStart, int iEnd, CListCtrl *pListCtrl)
{
if (pListCtrl->GetItemCount())
pListCtrl->DeleteAllItems();
else
{
pListCtrl->InsertColumn(0,"2连字号",LVCFMT_LEFT,70);
pListCtrl->InsertColumn(1,"次数",LVCFMT_LEFT,50);
pListCtrl->InsertColumn(2,"3连字号",LVCFMT_LEFT,80);
pListCtrl->InsertColumn(3,"次数",LVCFMT_LEFT,50);
pListCtrl->InsertColumn(4,"4连字号",LVCFMT_LEFT,100);
pListCtrl->InsertColumn(5,"次数",LVCFMT_LEFT,50);
pListCtrl->InsertColumn(6,"5连字号",LVCFMT_LEFT,120);
pListCtrl->InsertColumn(7,"次数",LVCFMT_LEFT,50);
}
UINT con[30][5];
ZeroMemory((void*)con,sizeof(UINT)*30*5);
int ItemCount=(iEnd - iStart) + 1;
for (int i=iStart; i<iEnd+1; i++)
{
LOTTERY lty=m_array.GetAt(i);
for (int j=1; j<9; j++)
{
for (int k=j+1; k<9; k++)
{
if (lty.i[j] > lty.i[k])
{
UINT temp=lty.i[j];
lty.i[j]=lty.i[k];
lty.i[k]=temp;
}
}
}
for (j=1; j<9; j++)
{
if ((j+5)<9 && (lty.i[j]+1 == lty.i[j+1]) && (lty.i[j]+2 == lty.i[j+2]) && (lty.i[j]+3 == lty.i[j+3]) && (lty.i[j]+4 == lty.i[j+4]) && (lty.i[j]+5 == lty.i[j+5])) {con[lty.i[j]-1][4]++;j+=6;}
if ((j+4)<9 && (lty.i[j]+1 == lty.i[j+1]) && (lty.i[j]+2 == lty.i[j+2]) && (lty.i[j]+3 == lty.i[j+3]) && (lty.i[j]+4 == lty.i[j+4])) {con[lty.i[j]-1][3]++;j+=5;}
if ((j+3)<9 && (lty.i[j]+1 == lty.i[j+1]) && (lty.i[j]+2 == lty.i[j+2]) && (lty.i[j]+3 == lty.i[j+3])) {con[lty.i[j]-1][2]++;j+=4;}
if ((j+2)<9 && (lty.i[j]+1 == lty.i[j+1]) && (lty.i[j]+2 == lty.i[j+2])) {con[lty.i[j]-1][1]++;j+=3;}
if ((j+1)<9 && (lty.i[j]+1 == lty.i[j+1])) {con[lty.i[j]-1][0]++;j+=2;}
}
}
CString strConn;
for (i=0; i<30; i++)
{
BOOL inserted=FALSE;
if (con[i][0])
{
inserted=TRUE;
pListCtrl->InsertItem(0,NULL);
strConn.Format("%2d %2d ",i+1,i+2);
pListCtrl->SetItemText(0,0,strConn);
strConn.Format("%d",con[i][0]);
pListCtrl->SetItemText(0,1,strConn);
}
if (con[i][1])
{
if (!inserted)
{
inserted=TRUE;
pListCtrl->InsertItem(0,NULL);
}
strConn.Format("%2d %2d %2d",i+1,i+2,i+3);
pListCtrl->SetItemText(0,2,strConn);
strConn.Format("%d",con[i][1]);
pListCtrl->SetItemText(0,3,strConn);
}
if (con[i][2])
{
if (!inserted)
{
inserted=TRUE;
pListCtrl->InsertItem(0,NULL);
}
strConn.Format("%2d %2d %2d %2d",i+1,i+2,i+3,i+4);
pListCtrl->SetItemText(0,4,strConn);
strConn.Format("%d",con[i][2]);
pListCtrl->SetItemText(0,5,strConn);
}
if (con[i][3])
{
if (!inserted)
{
inserted=TRUE;
pListCtrl->InsertItem(0,NULL);
}
strConn.Format("%2d %2d %2d %2d %2d",i+1,i+2,i+3,i+4,i+5);
pListCtrl->SetItemText(0,6,strConn);
strConn.Format("%d",con[i][3]);
pListCtrl->SetItemText(0,7,strConn);
}
}
}
//----------------显示曲线窗口-----------------//
void CChildView::OnShowCurveView()
{
if (!m_pFreq)
{
m_pFreq=new FREQUENCY[m_array.GetSize()+1];
}
for (unsigned int i=0; i<m_array.GetSize()-m_iWidth+1; i++)
{
FrequencyStatistics(m_array.GetSize()-m_iWidth-i,i);
}
m_CurveView.ShowWindow(SW_SHOWMAXIMIZED);
}
//----------------显示序列统计窗口-----------------//
void CChildView::OnShowSequency()
{
if (!m_dlgSeq.m_isFilled)
{
int order=0;
int w=m_array.GetSize();
for (int i=0; i<w-6; i++)
{
LOTTERY lot1 = m_array.GetAt(i);
char szOrder[12];
itoa(lot1.t.t0,szOrder,10);
m_dlgSeq.m_list.InsertItem(order,NULL);
m_dlgSeq.m_list.SetItemText(order,0,szOrder);
for (int j=i+1; j<i+7; j++)
{
LOTTERY lot2 = m_array.GetAt(j);
int nNum=0;
UINT buf[10];
lot2.GetDifference(&lot1,&nNum,buf);
CString szText;
szText.Format("%d--",nNum);
for (int k=0; k<nNum; k++)
{
CString strTemp;
strTemp.Format("%2u ",buf[k]);
szText+=strTemp;
}
m_dlgSeq.m_list.SetItemText(order,j-i,szText);
}
order++;
}
m_dlgSeq.m_isFilled=TRUE;
}
m_dlgSeq.ShowWindow(SW_SHOWNORMAL);
}
void CChildView::OnShowSumWindow()
{
if (!m_dlgSum.m_isFilled)
{
int count=m_array.GetSize();
m_dlgSum.m_nSize=count;
if (m_dlgSum.m_pBuf)
{
delete [] m_dlgSum.m_pBuf;
}
m_dlgSum.m_pBuf=new UINT[count];
LOTTERY lty;
for (int i=0; i<count; i++)
{
lty=m_array.GetAt(i);
m_dlgSum.m_pBuf[i]=lty.GetSum();
}
for (i=0; i<count-1; i++)
{
for (int j=i+1; j<count; j++)
{
if (m_dlgSum.m_pBuf[i] > m_dlgSum.m_pBuf[j])
{
UINT temp=m_dlgSum.m_pBuf[i];
m_dlgSum.m_pBuf[i]=m_dlgSum.m_pBuf[j];
m_dlgSum.m_pBuf[j]=temp;
}
}
}
m_dlgSum.m_isFilled=TRUE;
}
m_dlgSum.ShowWindow(SW_NORMAL);
}
UINT CChildView::C_N_M(int n, int m)
{
if (m==0) return 1;
_int64 sum=1,b1=1,b2=1;
for (int i=1; i<=n; i++)
{
sum*=i;
}
for ( i=1; i<=m; i++)
{
b1*=i;
}
for ( i=1; i<=(n-m); i++)
{
b2*=i;
}
return (UINT)(sum/b1/b2);
}
void CChildView::FillSequencyArray()
{
/* int count=m_array.GetSize();
ZeroMemory(&m_seq,sizeof(SEQUENCY)*MAX_SEQUENCY_NUMBER);
ZeroMemory(&m_feq,sizeof(FREQUENCY)*MAX_SEQUENCY_NUMBER);
for (int i=m_nMin; i<=m_nMax; i++)
{
FREQUENCY freq;
for (int j=0; j<count-i+1; j++)
{
FrequencyStatistics(count-i-j,i,&freq);
if (j== (count-i))
{
m_feq[i]=freq;
}
for (int k=0; k<30; k++)
{
m_seq[i].s[freq.f[k]]++;
}
}
for (int k=0; k<MAX_SEQUENCY_NUMBER; k++)
{
m_seq[i].s[k]/=(count-i+1);
}
}*/
}
double LOTTERY::GetFS()
{
double dFS=0;
for (int i=1; i<8; i++)
dFS+=pCV->m_dFreq[this->i[i]-1];
return dFS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -