开年会部门每人派发一张双色球彩票,算是年会的小礼品。
拿到手一看每张都连号连得很厉害,基本上都像这样1、2、3、4、5、8,10...购买彩票的人也太懒了吧,机选也好呀,手填还填成这样。
在一个满是程序员的部门里这种情况实在太让人感到无语了,于是本人自己突发奇想写了一个Linux环境下的C语言双色球的随机算号程序...随便玩玩。
/* 备注:恭喜发财!中大奖!
规则:
1. 6个红色球号码 + 1个蓝色球号码
2. 红色球号码范围 :1-33
蓝色球号码范围:1-16
3. 红色球号码不会重复
算法:
1. 红球三连号或以上的概率极小,可以考虑剔除。例如:23、24、25等等...
2. 所有红球均在同一区段的概率极小,亦可考虑剔除。(暂不处理)
红球的号码可分为三个区段:
区段一:1-11
区段二:12-22
区段三:23-33
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define MAX_SUCCESSIVE 3
#define RED_BALL_QUANTITY 6
#define BLUE_BALL_QUANTITY 1
#define RED_BALL_MAX 33
#define BLUE_BALL_MAX 16
#define INT_ARRAY_SIZE(array) (sizeof(array) / sizeof(int))
#define DEBUG 0
#define DEBUG_MSG(m) do{\
if(DEBUG) \
printf(m); \
}while(0)
typedef struct Str_DoubleBall_Group{
int RedBall_IdGroup[RED_BALL_QUANTITY];
int BlueBall_Id;
}Str_DoubleBall_Group;
#if 0
typedef struct Str_DoubleBall_Linklist{
struct Str_DoubleBall_Group Str_DBG;
struct Str_DoubleBall_Linklist *p_prev;
struct Str_DoubleBall_Linklist *p_next;
}Str_DoubleBall_Linklist;
#endif
/**** 函数声明 ****/
static inline void Print_Int_Array(int *P_array,int