生成一注双色球-c语言
2014-04-10 21:25
253 查看
1、最开始的程序
2、改进后的算法
#include<stdio.h> #include<stdlib.h> int produce_red();//每次产生一个红号 int produce_blue();//生成蓝号 void sort(int *a,int len); /****************************************************** *该程序用来生成一注双色球 *红号六个是不能重复的,首先生成第一个红号,然后一次生成 *后面的红号,生成时依次与前面的比较,若与其中的一个相等 *则换一个随机的号,再一次比较,设一个计数器count,若都不 *相等,则count=i;注意count清零 ******************************************************/ int main() { int i,j; int count=0; int tmp; int ticket[7]={0}; srand((int)time(0)); //设随机数种子,时间单位为秒,一秒内出的随机数相等 for(i=0;i<6;i++) { if(i==0) ticket[0]=produce_red(); //ticket[6]=produce_red(); else { //j=i; flag: tmp=produce_red(); count=0; for(j=0;j<i;j++) if(ticket[j]==tmp) goto flag; else count++; if(count==i) { ticket[i]=tmp; } count=0; } } ticket[6]=produce_blue(); sort(ticket,6); for(i=0;i<6;i++) { printf("%d ",ticket[i]); } printf("| %d",ticket[6]); printf("\n"); } int produce_red()//一次产生一个红球 { int j; j=1+(int)(33.0*rand()/(RAND_MAX+1.0)); return j; } int produce_blue() { int j; //srand((int)time(0)); j=1+(int)(16.0*rand()/(RAND_MAX+1.0)); return j; } void sort(int *a,int len) { int i=0; int j; int t; for(i=0;i<len;i++) { for(j=0;j<len-i-1;j++) { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } }
2、改进后的算法
#include<stdio.h> #include<stdlib.h> int produce_red(); int produce_blue(); void sort(int *a,int len); /*********************************************** *彩票的改进程序,用一个数组保存所有的数字,每当 *生成一个号时,让相应的数组中的数字置零,以保证 *不会重复 ***********************************************/ int main() { int i,j,count=0; int tmp; int res[7];//保存最后生成的一注彩票 int num[33]={1,2,3,4,5,6,7,\ 8,9,10,11,12,13,\ 14,15,16,17,18,\ 19,20,21,22,23,\ 24,25,26,27,28,\ 29,30,31,32,33}; srand((int)time(0)); while(count!=6) { tmp=produce_red(); if(num[tmp-1]!=0) { res[count]=tmp; count++; num[tmp-1]=0; } else continue; } res[6]=produce_blue(); sort(res,6); for(i=0;i<6;i++) printf("%d ",res[i]); printf("| %d\n",res[6]); } int produce_red()//一次产生一个红球 { int j; j=1+(int)(33.0*rand()/(RAND_MAX+1.0)); return j; } int produce_blue() { int j; //srand((int)time(0)); j=1+(int)(16.0*rand()/(RAND_MAX+1.0)); return j; } void sort(int *a,int len)//冒泡排序 { int i=0; int j; int t; for(i=0;i<len;i++) { for(j=0;j<len-i-1;j++) { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } }
相关文章推荐
- C语言--模拟生成一注双色球结果
- 模拟双色球彩票开奖结果:随机生成一注双色球彩票,判断其是否中奖,奖金为多少。
- 模拟双色球彩票开奖结果:随机生成一注双色球彩票,判断其是否中奖,奖金为多少。
- Erlang随机数生成一注双色球
- win7环境下实现cl.exe编译c语言 生成.i .asm .obj .exe 文件
- 用C语言模拟随机数的生成
- C语言随机数,如何生成既有正数又有负数的随机数呢
- c语言:最小生成树之Prim算法
- C语言生成螺旋矩阵2
- 图邻接矩阵存储 最小生成树 prim普里姆算法 C语言实现
- 使用C语言实现最小生成树求解的简单方法
- C语言算法之最小耗费生成树
- 简谈二维码(QRcode)的C语言生成,在单片机平台的实现
- C语言对通讯数据包生成校验码的例子
- c语言如何生成随机数
- C语言-数据结构-prim算法求最小生成树
- 生成一个任意长度的随机字符串,包含数字和字母[C语言]
- python 实现一个双色球生成程序
- java 实现双色球随机选一注
- c语言:普里姆算法和克鲁斯卡尔算法求最小生成树