500W元RMB,用算法算出福彩双色球的开奖号码

上善若水邻 2011-01-10 10:41:54
纯属为找工作做的项目。
我假定双色球开奖号码无人为因素。然后我做出如下需求:
要求一》双色球全排序并输出到文件中。
要求二》统计历史开奖号码。
要求三》根据统计数据寻找出一定规律。然后生成十组号码,
要求四》生成的十组号码至少中一个5等奖和两个6等奖。
目前我提取出了两年的数据,并且统计出了有31164672种组合。
可是要输出到文件的时候卡住了(我试过一次全输出到文件效率不可接受),然后我想到了分块输出,大家有什么好方法吗。

#include<iostream>
#include<fstream>
#include<string>
#include<vector>
using namespace std;
void g_getData(char fileName[], string &str);
void g_atoi(vector<int> &num,const string &str);
int g_count();
int main()
{
string str;
g_getData("2.txt",str);
vector<int> num;
g_atoi(num,str);
for(int i=0;i<num.size();i++)
{

if(i%7==0)
cout<<endl;
cout<<num.at(i)<<" ";

}
int i=g_count();
cout<<i<<endl;
system("pause");
}
//从文件中提取出数据
void g_getData(char fileName[], string& str)
{
ifstream in(fileName);
if(!in)
return ;
string temp;
while(!in.eof())
{
getline(in, temp);
str += temp + '\n';
}
in.close();

}
//转换数据为整数
void g_atoi(vector<int> &num,const string &str)
{

char p[30] = {0};
int i=0;
for(unsigned int j=0; j< str.size(); j++)
{

if((str[j] == ' ') || (str[j]=='\n'))
{
if(i!=0)
{
num.push_back(atoi(p));
}
i=0;
}
else
{
p[i++] = str[j];
}


}

}
//全排序统计
int g_count()
{
int count = 0;//统计次数
int i_a = 1, i_b = 2, i_c = 3;
int i_d = 4, i_e = 5, i = 0;
int j = 1;
bool flag = true;
while(flag)
{
for( i= i_e+1; i <= 36; i++)
{
for(int j = 1; j <=16; j++)
{
count++;
}
}
if(++i_e <= 35)
{
i = i_e+1;
}
else if(++i_d <= 34)
{
i_e = i_d+1;
}
else if(++i_c <= 33)
{
i_d = i_c+1;
i_e = i_c+2;
}
else if(++i_b <= 32)
{
i_c = i_b+1;
i_d = i_b+2;
i_e = i_b+3;
}
else if(++i_a <= 31)
{
i_b=i_a+1;
i_c=i_a+2;
i_d=i_a+3;
i_e=i_a+4;
}
else
flag= false;
}
return count;
}
...全文
7521 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
szuzsq 2011-01-17
  • 打赏
  • 举报
回复
以为你出500W请人写个代码哦
sghdls 2011-01-11
  • 打赏
  • 举报
回复


这个项目,有什么实际意义吗
zhanshen2891 2011-01-11
  • 打赏
  • 举报
回复
据量太大了,想办法减少存储空间。

你的数据不需要存成字符串啊,可以改为二进制数据,比如,一共是7个号码,那么可以每个号码用一个字节表示,但是这样数据量也还是太大,建议你用数据库保存,要不就得分成N个文件,可以给每个文件编号,就好像硬盘分区一样,并且把数据按顺序存储,这样找起来就快多了
job82824 2011-01-11
  • 打赏
  • 举报
回复
文本文件效率低的话,可以改为数据库mdb\mdf文件。
luciferisnotsatan 2011-01-11
  • 打赏
  • 举报
回复
lz记得加上后门,想要啥号就啥号,符合中国国情
上善若水邻 2011-01-11
  • 打赏
  • 举报
回复
哈哈 我听大家的。这个意义不大,输出我搞定了。 不想搞下去了。
ForestDB 2011-01-11
  • 打赏
  • 举报
回复
31164672条记录,
假定一条记录为
01 02 03 04 05 06 07\n
然后存ascii
那么一条记录为21byte
全部记录为654458112byte
约624.14M byte
太大了吧
存binary的话
一条记录也7byte
也有200多M
可以考虑数据库吧
於黾 2011-01-11
  • 打赏
  • 举报
回复
先别管程序什么的高科技什么的了,想用程序实现,最重要的是要有算法.

就是说,抛开代码,你要想根据一串数字,得到另一串数字,你是怎么样计算的?

你想输出到文件,输出什么东西?
luciferisnotsatan 2011-01-11
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 iambic 的回复:]

很多人听说可以用程序算彩票,纷纷转行程序员。楼主就是其中之一吧。
[/Quote]
+1

要能算出来,富豪榜上就是一串数学家了
zhangxneu 2011-01-11
  • 打赏
  • 举报
回复
hehe,纯得一塌糊涂!
ayw215 2011-01-11
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 iambic 的回复:]

很多人听说可以用程序算彩票,纷纷转行程序员。楼主就是其中之一吧。
[/Quote]
iambic 2011-01-11
  • 打赏
  • 举报
回复
很多人听说可以用程序算彩票,纷纷转行程序员。楼主就是其中之一吧。
mfmco2 2011-01-11
  • 打赏
  • 举报
回复
搞个后门,让穷几代也分享分享。。
:)
赵4老师 2011-01-11
  • 打赏
  • 举报
回复
算法不能解决这个开奖问题
BuleRiver 2011-01-11
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 milkylove 的回复:]
what a clever boy
[/Quote]
。。。
SamXCode 2011-01-11
  • 打赏
  • 举报
回复
呵呵
想法好呃
可惜
失落的凡凡 2011-01-11
  • 打赏
  • 举报
回复
what a clever boy
xzj07 2011-01-11
  • 打赏
  • 举报
回复
这么随机的事情真是没多大意义....不如换个主题吧!做个管理系统啊啥的都比这个要现实点啊!
kingstarer 2011-01-11
  • 打赏
  • 举报
回复
关于输出到文件,不知道你对速度的要求是什么

用c语言的api输出速度还是蛮快的

一秒能写十几M的数据 这样的速度不能满足你的要求?
mnbqwe1 2011-01-11
  • 打赏
  • 举报
回复
楼主要是中奖了,就不用找工作了
加载更多回复(8)

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧