#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include<vector>
#include<algorithm>
using namespace std;
int obj[7];
int select[7];
vector<int> bingo,b1;
vector<int>::iterator it;
int rnd(int s[7],vector<int> &b)
{
int i,j;
for( i = 0;i < 7;i++ )
{
s[i]=rand()%33+1;//取1-33的隨機數
}
for(i=0;i<7;i++)
{
for(j=i+1;j<7;j++)
{
if (s[i]==s[j]) //判斷產生的隨機數是否有重復
return 1;//如發生重復返回1
}
}
for(i=0;i<7;i++)
b.push_back (s[i]); //進棧
sort(b.begin (),b.end());//對產生隨機數排序
return 0;
}
int trap()//用於手選號碼的錯誤判定
{
for(int i=0;i<7;i++)
{
for(int j=i+1;j<7;j++)
{
if (b1[i]==b1[j])//判定是否有重復
return 1;
}
if((b1[i]<1)||(b1[i]>33))//判定是否超出數據範圍
return 1;
}
return 0;
}
int hand()//手選號碼
{
for(int i=0;i<7;i++)
{
cout<<"請輸入第"<<i+1<<"個號碼:";
cin>>select[i];
b1.push_back(select[i]);
cout<<endl;
}
if (trap()==1)
{
cout<<"您輸的號碼有重復或超出了1-33的範圍,請重新輸入."<<endl;
b1.clear ();//清空錯誤數據
hand();//遞歸,如號碼出錯重選
}
for (i=0;i<7;i++)
{
cout<<b1[i]<<"\t";//號碼正確則輸出
}
cout<<endl;
return 0;
}
int god()//機選號碼
{
int a;
cout<<"您的機選號碼是:..."<<endl;
do
{
a=rnd(select,b1);
if(a==0)
for(int i=0;i<b1.size();i++)
{
cout<<b1[i]<<"\t";
}
}
while(a==1);//錯誤控制
cout<<endl;
return 0;
}
int lucky()//產生中獎號碼
{
int b;
cout<<"中獎號碼是:..."<<endl;
do
{
b=rnd(obj,bingo);
if(b==0)
for(int i=0;i<bingo.size();i++)
{
cout<<bingo[i]<<"\t";
}
}
while(b==1);
return 0;
}
int check()//檢查中獎情況
{
int count=0;//猜中號碼個數
for(int i=0;i<7;i++)
{
it=find(bingo.begin(),bingo.end(),b1[i]);
if(it!=bingo.end())
{
count++;
}
}
return count;
}
int result(int p)//概率統計
{
int c[8]={0,0,0,0,0,0,0,0};
int yun;
lucky();
for(int k=0;k<p;k++)
{
god();
c[check()]++;//將猜中每個號碼個數的次數存入該數組相應的下標元素
b1.clear ();
}
cout<<endl<<"在上述測試中:"<<endl;
for(int j=0;j<8;j++)
{
yun=c[j]*100/p;
cout<<"猜中"<<j<<"個號碼的次數為"<<c[j]<<"次"<<endl;
cout<<"猜中"<<j<<"個號碼的概率為"<<yun<<"%"<<endl;
}
bingo.clear ();
return 0;
}
int main()
{
char l;
int t=0;
srand( (unsigned)time( NULL ) );//隨機種子
do
{
cout<<"****************************************************"<<endl;
cout<<"* 全民大彩票,驚喜多多,中獎多多,歡迎大家踴躍購買啦! *"<<endl;
cout<<"* 壓得多,贏得多,回家買輛大卡車! *"<<endl;
cout<<"* 開心刺激33選7,馬上就要開始了,趕快押寶了 *"<<endl;
cout<<"****************************************************"<<endl;
cout<<"[1]手選號碼"<<endl;
cout<<"[2]機選號碼"<<endl;
cout<<"[3]概率統計"<<endl;
cout<<"[4]退出"<<endl;
cout<<"請輸入您的選擇[1-3]";
cin>>l;
switch(l)
{
case '1':
hand();
lucky();
cout<<endl<<"您猜中了"<<check()<<"個號碼"<<endl;
bingo.clear ();
b1.clear ();
break;
case '2':
god();
lucky();
cout<<endl<<"您猜中了"<<check()<<"個號碼"<<endl;
bingo.clear ();
b1.clear ();
break;
case '3':
cout<<"請輸入測試的次數:";
cin>>t;
result(t);
break;
case '4':
cout<<"十賭九輸啊!快走吧,再晚了就改不上2路汽車了..."<<endl;
break;
default:
cout<<"請輸入1-3之間的數字"<<endl;
}
}
while(l!='4');
return 0;
}
我以前用過的壹個程序 妳試試