规则:“双色球”每注投注号码由 6 个红色球号码和 1 个蓝色球号码组成。红色球号码从 1--33 中选择;蓝色球号码从 1--16 中选择。“双色球”每注 2 元。总而言之,就是从 1-33 个数中选择 6 个数,再从 1-16 个数中选择 1 个数。中奖的条件如下:

编写思路:编写该程序我使用了结构体数组。如果这个号码被选中,就会被标记,下次就不会选择。选择我使用了随机数生成,并且随机种子使用了毫秒级别,防止短时间内产生两相同的数。

首先生成一组双色球中奖号码。然后用循环随机生成 N 组购买号码,使用购买号码与中奖号码进行对比来确定是否中奖,以及中奖等级,然后计算中奖金额,将中奖的总次数除以购买的次数,就可以计算出中奖率,如果次数不够,计算出来的就不准确,我使用 1000000 次,可以模拟出中奖率在 6.7% 左右。但是中一等奖的概率是几乎没有。

感兴趣的同学可以将多试几次看能否出现一等奖。

运行结果:

源码:


// 程序功能:双色球中奖率计算
// 编译环境:VS2013
// 结    论:中奖率为 6.7%#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<sys/timeb.h>struct RED
{bool IS_CHOSE;int number;
};struct BLUE
{bool IS_CHOSE;int number;
};void initBALL(RED *red, BLUE *blue);
void printfZJ(RED *red, BLUE *blue);
int printfZT(RED *red, BLUE *blue, RED *myred, BLUE *myblue);int main()
{struct timeb timeSeed;ftime(&timeSeed);srand(timeSeed.time * 1000 + timeSeed.millitm);printf("彩票中奖号码为:\n");RED red[33];BLUE blue[16];initBALL(red, blue);printfZJ(red, blue);int CS = 1000000;  // 购买次数int ZERO = 0;int ONE = 0;int TWO = 0;int THREE = 0;int FOUR = 0;int FIVE = 0;int SIX = 0;for (int i = 0; i < CS; i++){//printf("购买的彩票号码为:\n");RED myred[33];BLUE myblue[16];initBALL(myred, myblue);//printfZJ(myred, myblue);int DJ = printfZT(red, blue, myred, myblue);switch (DJ){case 0:ZERO++; break;case 1:ONE++; break;case 2:TWO++; break;case 3:THREE++; break;case 4:FOUR++; break;case 5:FIVE++; break;case 6:SIX++; break;}}printf("总共选择%d次\n", CS);printf("没中奖%d次\n", ZERO);printf("一等奖%d次\n", ONE);printf("二等奖%d次\n", TWO);printf("三等奖%d次\n", THREE);printf("四等奖%d次\n", FOUR);printf("五等奖%d次\n", FIVE);printf("六等奖%d次\n", SIX);int outmoney = CS * 2;int inmoney = SIX * 5 + FIVE * 10 + FOUR * 200 + THREE * 3000 + TWO * 341021 + ONE * 10000000;printf("共耗资%d元,中奖%d元,亏损%d元\n", outmoney, inmoney, outmoney - inmoney);int ZJ = CS - ZERO;double ZJL = (ZJ*1.0) / CS * 100;printf("中奖率为:%lf", ZJL);_getch();return 0;
}
void initBALL(RED *red, BLUE *blue)
{for (int i = 0; i < 33; i++){red[i].IS_CHOSE = false;red[i].number = i + 1;}for (int i = 0; i < 16; i++){blue[i].IS_CHOSE = false;blue[i].number = i + 1;}for (int i = 0; i < 6; i++){while (true){int NUM = rand() % 33 + 1;if (red[NUM - 1].IS_CHOSE){continue;}else{red[NUM - 1].IS_CHOSE = true;red[NUM - 1].number = NUM;break;}}}int NUM = rand() % 16 + 1;blue[NUM - 1].IS_CHOSE = true;/*blue[NUM - 1].number=NUM;*/
}void printfZJ(RED *red, BLUE *blue)
{printf("红色球为\n");for (int i = 0; i < 33; i++){if (red[i].IS_CHOSE){printf("%d\t", red[i].number);}}printf("\n");printf("蓝色号为:\n");for (int i = 0; i < 16; i++){if (blue[i].IS_CHOSE){printf("%d\t\n", blue[i].number);}}
}int printfZT(RED *red, BLUE *blue, RED *myred, BLUE *myblue)
{int rednumber = 0;int bluenumber = 0;for (int i = 0; i < 33; i++){if (red[i].IS_CHOSE){for (int j = 0; j < 33; j++){if (myred[j].IS_CHOSE){if (red[i].number == myred[j].number){rednumber++;break;}}}}}for (int i = 0; i < 16; i++){if (blue[i].IS_CHOSE){for (int j = 0; j < 16; j++){if (myblue[j].IS_CHOSE){if (blue[i].number == myblue[j].number){bluenumber++;break;}}}break;}}//printf("红色中%d\t蓝色中%d\n",rednumber,bluenumber);int DJ = 0;if (rednumber == 6 && bluenumber == 1){DJ = 1;}if (rednumber == 6 && bluenumber == 0){DJ = 2;}if (rednumber == 5 && bluenumber == 1){DJ = 3;}if (rednumber == 5 && bluenumber == 0){DJ = 4;}if (rednumber == 4 && bluenumber == 1){DJ = 4;}if (rednumber == 4 && bluenumber == 0){DJ = 5;}if (rednumber == 3 && bluenumber == 1){DJ = 5;}if ((rednumber == 2 && bluenumber == 1) || (rednumber == 1 && bluenumber == 1) || (rednumber == 0 && bluenumber == 1)){DJ = 6;}return DJ;
}

C 语言计算双色球的中奖率相关推荐

  1. java中奖率算法_JS简单实现:根据奖品权重计算中奖概率实现抽奖的方法

    本文主要介绍:使用 JS 根据奖品权重计算中奖概率实现抽奖的方法. 一.示例场景 1.1.设置抽奖活动的奖项名称 奖项名称:["一等奖", "二等奖", &qu ...

  2. html抽奖调整中奖率,JS简单实现:根据奖品权重计算中奖概率实现抽奖的方法 _ 惠州SEO...

    摘要 //layui模块化引用layui.use(['jquery','util'],function(){var$=layui.$,util=layui.util;//设置奖项名称.权重.中奖次数等 ...

  3. python3计算双色球_Python3实战:双色球开奖

    0.用经典概率学看双色球 双色球的一等奖中奖率大约为1772万分之一,六等奖的中奖概率略大于1/16,即6.25%.如果我们每期投资2元钱买彩票,那么中奖金额的期望略大于5元*6.25%,即0.312 ...

  4. java中奖率算法_抽奖概率-三种算法

    一.逢"几"中奖 逢"几"中奖,即通过预估抽奖人数和奖品数来判断,"几"=(抽奖人数/奖品数)*N.这是一种最简单抽奖算法,适合抽奖人数众多 ...

  5. 大转盘抽奖实现总中奖率可控内部逻辑分享

    近一个月都在围绕新年活动这个新需求进行开发,其中的核心功能就是大转盘抽奖,类似于pdd.网上找了很多方法都不符合本项目的业务需求,特此分享一下自己写的核心逻辑,首次发文欢迎批评指正. 1.首先需要有奖 ...

  6. 汉诺塔怎么加计数次数c语言,C语言计算汉诺塔最小移动步数 (二)

    前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较繁琐的.所以又根据这个公式又写了一个. ...

  7. Bio-protocol实验视频大赛中奖率提升至100%

    Bio-protocol举办的首届生物实验短视频大赛正在如火如荼的展开,值此佳节之际,我们将中奖率由40%提高到了100%.没错,所有参与的小伙伴都能拿奖啦(未获奖的参与者将获得三十元的京东购物卡)! ...

  8. R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离、dist函数计算矩阵中两两元素的曼哈顿距离

    R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离.dist函数计算矩阵中两两元素的曼哈顿距离 目录 R语言计算曼哈顿距离(Manhattan Distance ...

  9. R语言计算杰卡德相似系数(Jaccard Similarity)实战:自定义函数计算Jaccard相似度、对字符串向量计算Jaccard相似度、将Jaccard相似度转化为Jaccard距离

    R语言计算杰卡德相似系数(Jaccard Similarity)实战:自定义函数计算Jaccard相似度.对字符串向量计算Jaccard相似度.将Jaccard相似度转化为Jaccard距离 目录 R ...

最新文章

  1. Tarjan求割点桥
  2. 田志刚:写文章的两个好处
  3. python三十三:sys模块
  4. instance-based与model-based 区别
  5. Java内存区域分布
  6. python分类下取得所有子类_如何找到给定名称的类的所有子类?
  7. Java 异步回调机制实例解析
  8. 本周四晚8点直播预告丨探秘MySQL极限,解锁核心运维关卡
  9. Griffon 1.1 发布,Groovy 开发框架
  10. Google、Facebook等不可错过的 AI 开源工具,你想要的都在这里!
  11. 【前端 · 面试 】HTTP 总结(一)—— HTTP 概述
  12. 深入JVM-Class装载系统
  13. 浅谈安全攻防场景下面的安全检测
  14. word 全部标题降级
  15. iOS人脸识别Demo
  16. C++ STL标准库
  17. 如何查看当前位置显存使用情况
  18. AR 和 VR 的开源平台
  19. 热电偶 matlab,基于MATLAB的陶瓷窑炉温度与热电偶热电势关系的数学模型研究
  20. 通过HFS低成本搭建NAS,并内网穿透实现公网访问 2/2

热门文章

  1. JavaScript学习笔记及案例总结
  2. 408 知识点笔记——操作系统(内存管理)
  3. java调用QQ邮箱发送邮件
  4. 计算机基础考证强化训练范文,计算机基础知识题强化训练.doc
  5. VCam 虚拟摄像头 V3.1.0 下载 - 天空软件站 - 聊天工具 - 联络聊天
  6. 冲量在线正式加入中关村可信计算产业联盟,共同推动可信计算产业深度发展
  7. [转]UML八大误解
  8. TypeScript 初级教程-姜威-专题视频课程
  9. 20180925_Python练习题-三:一个商场在降价促销。如果购买金额50~100元(包含50元和100元)之间,会给10%的折扣;如果购买金额大于100元,会給20%折扣。编写一程序,询问购买价
  10. Vue自定义组件npm上传私服,且从私服下载使用