C 语言计算双色球的中奖率
规则:“双色球”每注投注号码由 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 语言计算双色球的中奖率相关推荐
- java中奖率算法_JS简单实现:根据奖品权重计算中奖概率实现抽奖的方法
本文主要介绍:使用 JS 根据奖品权重计算中奖概率实现抽奖的方法. 一.示例场景 1.1.设置抽奖活动的奖项名称 奖项名称:["一等奖", "二等奖", &qu ...
- html抽奖调整中奖率,JS简单实现:根据奖品权重计算中奖概率实现抽奖的方法 _ 惠州SEO...
摘要 //layui模块化引用layui.use(['jquery','util'],function(){var$=layui.$,util=layui.util;//设置奖项名称.权重.中奖次数等 ...
- python3计算双色球_Python3实战:双色球开奖
0.用经典概率学看双色球 双色球的一等奖中奖率大约为1772万分之一,六等奖的中奖概率略大于1/16,即6.25%.如果我们每期投资2元钱买彩票,那么中奖金额的期望略大于5元*6.25%,即0.312 ...
- java中奖率算法_抽奖概率-三种算法
一.逢"几"中奖 逢"几"中奖,即通过预估抽奖人数和奖品数来判断,"几"=(抽奖人数/奖品数)*N.这是一种最简单抽奖算法,适合抽奖人数众多 ...
- 大转盘抽奖实现总中奖率可控内部逻辑分享
近一个月都在围绕新年活动这个新需求进行开发,其中的核心功能就是大转盘抽奖,类似于pdd.网上找了很多方法都不符合本项目的业务需求,特此分享一下自己写的核心逻辑,首次发文欢迎批评指正. 1.首先需要有奖 ...
- 汉诺塔怎么加计数次数c语言,C语言计算汉诺塔最小移动步数 (二)
前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较繁琐的.所以又根据这个公式又写了一个. ...
- Bio-protocol实验视频大赛中奖率提升至100%
Bio-protocol举办的首届生物实验短视频大赛正在如火如荼的展开,值此佳节之际,我们将中奖率由40%提高到了100%.没错,所有参与的小伙伴都能拿奖啦(未获奖的参与者将获得三十元的京东购物卡)! ...
- R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离、dist函数计算矩阵中两两元素的曼哈顿距离
R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离.dist函数计算矩阵中两两元素的曼哈顿距离 目录 R语言计算曼哈顿距离(Manhattan Distance ...
- R语言计算杰卡德相似系数(Jaccard Similarity)实战:自定义函数计算Jaccard相似度、对字符串向量计算Jaccard相似度、将Jaccard相似度转化为Jaccard距离
R语言计算杰卡德相似系数(Jaccard Similarity)实战:自定义函数计算Jaccard相似度.对字符串向量计算Jaccard相似度.将Jaccard相似度转化为Jaccard距离 目录 R ...
最新文章
- Tarjan求割点桥
- 田志刚:写文章的两个好处
- python三十三:sys模块
- instance-based与model-based 区别
- Java内存区域分布
- python分类下取得所有子类_如何找到给定名称的类的所有子类?
- Java 异步回调机制实例解析
- 本周四晚8点直播预告丨探秘MySQL极限,解锁核心运维关卡
- Griffon 1.1 发布,Groovy 开发框架
- Google、Facebook等不可错过的 AI 开源工具,你想要的都在这里!
- 【前端 · 面试 】HTTP 总结(一)—— HTTP 概述
- 深入JVM-Class装载系统
- 浅谈安全攻防场景下面的安全检测
- word 全部标题降级
- iOS人脸识别Demo
- C++ STL标准库
- 如何查看当前位置显存使用情况
- AR 和 VR 的开源平台
- 热电偶 matlab,基于MATLAB的陶瓷窑炉温度与热电偶热电势关系的数学模型研究
- 通过HFS低成本搭建NAS,并内网穿透实现公网访问 2/2
热门文章
- JavaScript学习笔记及案例总结
- 408 知识点笔记——操作系统(内存管理)
- java调用QQ邮箱发送邮件
- 计算机基础考证强化训练范文,计算机基础知识题强化训练.doc
- VCam 虚拟摄像头 V3.1.0 下载 - 天空软件站 - 聊天工具 - 联络聊天
- 冲量在线正式加入中关村可信计算产业联盟,共同推动可信计算产业深度发展
- [转]UML八大误解
- TypeScript 初级教程-姜威-专题视频课程
- 20180925_Python练习题-三:一个商场在降价促销。如果购买金额50~100元(包含50元和100元)之间,会给10%的折扣;如果购买金额大于100元,会給20%折扣。编写一程序,询问购买价
- Vue自定义组件npm上传私服,且从私服下载使用