闲来无事,想着写一个双色球生成代码,顺便温习一下随机数产生和排序算法。
codeblock 17.12编译通过并可运行,希望大家中500W。
双色球每注由6颗红球和1颗蓝球组成,其中6颗红球的取值范围是[1, 33]不能重复,蓝球取值范围是[1, 16],可以和红球有重复。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#define RED_BALL_NUM 6
#define RED_BALL_VAL_MIN 1
#define RED_BALL_VAL_MAX 33
#define BLUE_BALL_NUM 1
#define BLUE_BALL_VAL_MIN 1
#define BLUE_BALL_VAL_MAX 16
#define TRUE 1
#define FALSE 0
typedef unsigned int u32;
static u32 GenRandValByRangLimit(u32 MinVal, u32 MaxVal)
{
return (rand() % (MaxVal - MinVal) + MinVal + 1);
}
static u32 CheckValExistInArry(u32 Val, u32 *Arry, u32 ArrySize)
{
u32 i;
for(i = 0; i < ArrySize; i++)
{
if(Val == Arry[i])
{
return TRUE;
}
}
return FALSE;
}
static void SortArry(u32 *Arry, u32 ArrySize)
{
u32 temp;
u32 i;
u32 j;
for(i = 0; i < ArrySize - 1; i++)
{
for(j = i + 1; j < ArrySize; j++)
{
if(Arry[i] > Arry[j])
{
temp = Arry[i];
Arry[i] = Arry[j];
Arry[j] = temp;
}
}
}
}
static void PrintArry(u32 *Arry, u32 ArrySize)
{
u32 i;
for(i = 0; i < ArrySize; i++)
{
printf("%4d", Arry[i]);
}
}
int main()
{
u32 i;
u32 j;
u32 lottery;
u32 temp;
srand((unsigned)time(NULL)); // 时间随机数种子
printf("Please enter how many lottery:\n");
scanf("%d", &lottery); //买多少注双色球
u32 RedBallArry[RED_BALL_NUM] = {0}; //声明红球数组
for(i = 0; i < lottery; i++)
{
printf("[%2d]", i);
printf(" RED:");
for(j = 0; j < RED_BALL_NUM; j++)
{
temp = GenRandValByRangLimit(RED_BALL_VAL_MIN - 1, RED_BALL_VAL_MAX); //产生一个1~33的随机数
if(CheckValExistInArry(temp, RedBallArry, RED_BALL_NUM)) //检查这个随机数是否已存在当前数组中
{
do
{
temp = GenRandValByRangLimit(RED_BALL_VAL_MIN - 1, RED_BALL_VAL_MAX);
}while(CheckValExistInArry(temp, RedBallArry, RED_BALL_NUM)); //重新生成随机数,直到当前数组没有该数
RedBallArry[j] = temp; //赋值到红球数组
}
else
{
RedBallArry[j] = temp; 赋值到红球数组
}
}
SortArry(RedBallArry, RED_BALL_NUM); //排序红球数组
PrintArry(RedBallArry, RED_BALL_NUM); //打印红球数组
memset(RedBallArry, 0, sizeof(RedBallArry)); //重置当前数组
printf(" BLUE:%4d\n", GenRandValByRangLimit(BLUE_BALL_VAL_MIN - 1, BLUE_BALL_VAL_MAX)); //生成并打印蓝球随机数
}
return TRUE;
}
转载自原文链接, 如需删除请联系管理员。
原文链接:C语言简单的双色球生成代码,转载请注明来源!