资深C++程序员进,问个很有难度的问题

WaistCoat06 2011-11-10 02:16:18
问个问题,作为一个C++程序员

如何才能买到中奖的彩票!

<谁给下计算中奖彩票号码的算法>

...全文
358 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
o330820350 2011-11-10
  • 打赏
  • 举报
回复
全买就会中
也就几十上百亿吧
九度空间 2011-11-10
  • 打赏
  • 举报
回复
我自己写的23选5的彩票:

#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <ctime>
#include <fstream>
#include <windows.h>
using namespace std;
#pragma warning(disable: 4786)
const int SUM=5;
void Sort(int *data);
void Unique(int *data,int max)
{
int curr_data,flag;
size_t num=0;
srand((unsigned)time(NULL));
while(num<SUM)
{
curr_data=rand()%max+1;
flag=1;
for(size_t ix=0;ix<SUM;++ix)
{
if(curr_data==data[ix])
{
flag=0;
break;
}
}
if(flag)
{
data[num++]=curr_data;
}
}
Sort(data);
}
void Sort(int *data)
{
int ix,jx,tt;
for(ix=1;ix<SUM;ix++)
{
for(jx=0;jx<SUM-1;jx++)
{
if(data[jx]>data[jx+1])
{
tt=data[jx];
data[jx]=data[jx+1];
data[jx+1]=tt;
}
}
}
for(ix=0;ix<SUM;ix++)
{
cout<<data[ix]<<" ";
}
cout<<endl;
}
int main()
{
int data[SUM]={-1,-1,-1,-1,-1};
int max=23;
Unique(data,max);
Sleep(1000);
return 0;
}
ypzhong 2011-11-10
  • 打赏
  • 举报
回复
还有人信彩票,全是假的,内部作弊,爆出多少这样的事情了。中国特色。
youkuxiaobin 2011-11-10
  • 打赏
  • 举报
回复
很好很强大
ValentinsLee 2011-11-10
  • 打赏
  • 举报
回复
不得不承认 你把全部的可能组合全都买了 肯定能中奖
柯大侠爱喝水 2011-11-10
  • 打赏
  • 举报
回复
这太简单了!!!


首先:
买张彩票!

然后:
睡一觉!

然后:
中奖概率挺大的,就是不能醒!
speacegenaul 2011-11-10
  • 打赏
  • 举报
回复
哈哈,你为何不用C++编写一个人民币印钞机呢?
yaohua1210 2011-11-10
  • 打赏
  • 举报
回复
全买很保险!
csdn网速很慢 2011-11-10
  • 打赏
  • 举报
回复
我有个思路。不过要实现的活现在估计还没计算机能抗的主。
把以前中奖的号码一次收集起来。
写N个随机码生成器。
如果有一个生成器生成的随机码跟以前中奖的都一样。那么这个生成器下一次生成的中奖率最高。
算法思想是尽可能的构造一个跟彩票公司生成器一样的生成器。
zzcmx2008 2011-11-10
  • 打赏
  • 举报
回复
买通彩票公司的人
孤飞俊驰 2011-11-10
  • 打赏
  • 举报
回复
中奖的程序员有么?
七擒关羽 2011-11-10
  • 打赏
  • 举报
回复
既然你诚心的发了第二个贴,那么我诚心的给你第二个必中发:
看下上期中奖号码,记住,大喊菠萝菠萝蜜,然后迅速去彩票购买点,接下来,你懂的。。。
selooloo 2011-11-10
  • 打赏
  • 举报
回复
这东西本来就是随机的,都是摇号,没规律可言。要是能算出来,程序员都是百万富翁了

你还不如考虑下怎么贿赂下彩票中心的人,给你透漏点内部消息才是正道
赵4老师 2011-11-10
  • 打赏
  • 举报
回复
纠正上帖:计算是不能提高中彩票的概率的。
赵4老师 2011-11-10
  • 打赏
  • 举报
回复
计算是不能降低中彩票的概率的。
仅供参考
//要求1:从给出来的不同的六组数字中,从每组任意挑选一个数字,最后组成一个六个数字的数组。
//将所有的数组全部列出来。
//同时,排除全部为偶数、全部为奇数的数组。
//排除四个数字递增连续(比如8、9、10、11)的数组。
//如下:
//第一个数字从这12个数字中挑选:,1,3,2,4,5,6,7,8,9,10,11,12
//第二个数字从这17个数字中挑选:,8,7,5,9,6,4,11,10,12,13,3,14,17,2,16,15,18
//第三个数字从这21个数字中挑选:,13,10,15,16,18,11,14,12,7,19,21,17,8,22,9,20,6,23,5,24,25
//第四个数字从这20个数字中挑选:,22,23,18,20,16,17,15,21,14,26,19,24,27,25,12,13,11,10,28,29
//第五个数字从这19个数字中挑选:,26,25,27,29,30,28,23,24,20,22,19,31,21,17,18,32,13,15,16
//第六个数字从这14个数字中挑选:,32,33,30,31,29,28,27,26,25,24,23,22,18,21
//要求2:
//请输入第1个数字的选择范围:(可以手动输入任意几个空格间隔的数字,最多30个)
//请输入第2个数字的选择范围:(可以手动输入任意几个空格间隔的数字,最多30个)
//请输入第3个数字的选择范围:(可以手动输入任意几个空格间隔的数字,最多30个)
//请输入第4个数字的选择范围:(可以手动输入任意几个空格间隔的数字,最多30个)
//请输入第5个数字的选择范围:(可以手动输入任意几个空格间隔的数字,最多30个)
//请输入第6个数字的选择范围:(可以手动输入任意几个空格间隔的数字,最多30个)
//然后回车,输出结果到cp.txt
//要求3:
//保证同一组数据的数都不相同。
//比如,第一个数为6时,第二个数或其他的数都不能再为6;第二个数为10时,第三个数或其他的数都不能再为10,以此类推……
//要求4:
//增加一个条件:在产生的每个数组A1A2A3A4A5A6中,要求A1<A2<A3<A4<A5<A6
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int v[6];
int n[6]={12,17,21,20,19,14};
int d[6][30]={
{1,3,2,4,5,6,7,8,9,10,11,12},
{8,7,5,9,6,4,11,10,12,13,3,14,17,2,16,15,18},
{13,10,15,16,18,11,14,12,7,19,21,17,8,22,9,20,6,23,5,24,25},
{22,23,18,20,16,17,15,21,14,26,19,24,27,25,12,13,11,10,28,29},
{26,25,27,29,30,28,23,24,20,22,19,31,21,17,18,32,13,15,16},
{32,33,30,31,29,28,27,26,25,24,23,22,18,21},
};
int i,j,i0,i1,i2,i3,i4,i5,s;
char ln[100],*t;
FILE *f;
int main() {
for (i=0;i<6;i++) {
printf("请输入第%d个数字的选择范围:",i+1);
fgets(ln,100,stdin);
j=0;
t=strtok(ln," ");
while (1) {
if (NULL==t) break;
if (0==t[0]) continue;//跳过多个空格间隔时取出的空串
d[i][j]=atoi(t);
j++;
if (j>=30) break;
t=strtok(NULL," ");
}
n[i]=j;
}
f=fopen("cp.txt","w");
if (NULL==f) {
printf("无法生成cp.txt!\n");
return 1;
}
printf("正在生成cp.txt...");
for (i0=0;i0<n[0];i0++) {
for (i1=0;i1<n[1];i1++) {
for (i2=0;i2<n[2];i2++) {
for (i3=0;i3<n[3];i3++) {
for (i4=0;i4<n[4];i4++) {
for (i5=0;i5<n[5];i5++) {
v[0]=d[0][i0];
v[1]=d[1][i1];
v[2]=d[2][i2];
v[3]=d[3][i3];
v[4]=d[4][i4];
v[5]=d[5][i5];
if (0==(v[0]%2)
&& 0==(v[1]%2)
&& 0==(v[2]%2)
&& 0==(v[3]%2)
&& 0==(v[4]%2)
&& 0==(v[5]%2)) continue;//排除全部为偶数
if (1==(v[0]%2)
&& 1==(v[1]%2)
&& 1==(v[2]%2)
&& 1==(v[3]%2)
&& 1==(v[4]%2)
&& 1==(v[5]%2)) continue;//排除全部为奇数
for (i=0;i<5;i++) {
for (j=i+1;j<6;j++) {
if (v[i]==v[j]) goto NEXT;//保证同一组数据的数都不相同
}
}
NEXT:
if (i>=5) {
for (i=0;i<5;i++) for (j=i+1;j<6;j++) if (v[i]>v[j]) {s=v[i];v[i]=v[j];v[j]=s;}//从小到大排序
if ((v[0]+1==v[1]
&& v[1]+1==v[2]
&& v[2]+1==v[3])
|| (v[1]+1==v[2]
&& v[2]+1==v[3]
&& v[3]+1==v[4])
|| (v[2]+1==v[3]
&& v[3]+1==v[4]
&& v[4]+1==v[5])) continue;//排除四个数字递增连续
fprintf(f,"%2d,%2d,%2d,%2d,%2d,%2d\n",v[0],v[1],v[2],v[3],v[4],v[5]);
}
}}}}}}
fclose(f);
printf("\n生成cp.txt完毕\n");
return 0;
}
//如果文件in.txt的内容为
//1 3 2 4 5 6 7 8 9 10 11 12
//8 7 5 9 6 4 11 10 12 13 3 14 17 2 16 15 18
//13 10 15 16 18 11 14 12 7 19 21 17 8 22 9 20 6 23 5 24 25
//22 23 18 20 16 17 15 21 14 26 19 24 27 25 12 13 11 10 28 29
//26 25 27 29 30 28 23 24 20 22 19 31 21 17 18 32 13 15 16
//32 33 30 31 29 28 27 26 25 24 23 22 18 21
//可以在cmd窗口里面输入命令
//cp <in.txt
//得到要求1对应的结果
//BTW:中了一定要分我六成啊!嘿嘿!(^=^)
序员 2011-11-10
  • 打赏
  • 举报
回复
不带这么搞笑的。。
机智的呆呆 2011-11-10
  • 打赏
  • 举报
回复
拼人品
WaistCoat06 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wangliangffaflgh 的回复:]

你至少要精通概率论、组合数学、离散数学、矩阵论,还要精通人工智能尤其是---人工神经网络
http://wenku.baidu.com/view/8b789e4c2b160b4e767fcf2d.html
[/Quote]

小弟回去拜读一下 《BP神经网络在福利彩票预测中的应用》
测试NULL 2011-11-10
  • 打赏
  • 举报
回复
你至少要精通概率论、组合数学、离散数学、矩阵论,还要精通人工智能尤其是---人工神经网络
http://wenku.baidu.com/view/8b789e4c2b160b4e767fcf2d.html
ouyh12345 2011-11-10
  • 打赏
  • 举报
回复
加载更多回复(11)

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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