双色球随机生成

谁没有个发财梦?科学发财,C语言学起来!

故事还要从一个吃 蝙蝠的憨批说起,公元2020年春节初有某" 恶 " 人,,,此处省略n 万字

此刻本应该在学校的我还在家呆着,感觉这个年过的 太憋太闷。

无聊,没事干,就学习一点网课,复习一下之前的C语言,感觉之前学习的时候 还是有点粗心的。

#include <time.h>
time_t time(time_t *t);
功能:获取当前系统时间
参数:常设置为NULL
返回值:但钱时间 time_t 相当于 long 类型,单位是 毫秒ms
 
#include <stdlib.h>
void srand(unsigned int seed);
功能:用来设置rand() 产生随机数的随机种子
参数:如果每次 seed相等,rand()产生随机数相等
返回值:无
 
#include <stdlib.h>
int rand(void);
功能:返回一个随机数值
参数:无
返回值:随机数
 
普及一下双色球的小知识吧
  • 开奖号码 是连着的7个号码,其中包括6个红球号码,1个蓝球号码,红球号码范围1-33,蓝球号码1-16
  • 其中 红球彼此不能重复,蓝球和红球可重复
 

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <time.h>
 4 
 5 // 双色球:6个红球(1-33) 1个蓝球(1-16)
 6 // 问题:红色球不可以重复,蓝球 可以和红球重复 => 去重操作
 7 
 8 int main()
 9 {
10     int temp, isexist, arr[7];
11 
12     srand((unsigned int)time(NULL));
13     // 生成号码 个数
14     int t = 10;
15     while (t--)
16     {
17         //随机抽号
18         for (int i = 0; i < 6; i++)
19         {
20             temp = rand() % 33 + 1;
21             isexist = 0;
22             for (int j = 0; j < i; j++) {
23                 if (temp == arr[j]) {
24                     isexist = 1;  //重复 退出内层循环
25                     break;
26                 }
27             }
28             if (isexist)
29                 i--;
30             else
31                 arr[i] = temp;
32         }
33         arr[6] = rand() % 16 + 1;
34         //输出
35         printf("为您生成的双色球号: ");
36         for (int i = 0; i < 7; i++)
37             if (i == 6)
38                 printf("+%02d", arr[i]);
39             else if(i == 5)
40                 printf("%02d", arr[i]);
41             else
42                 printf("%02d-", arr[i]);
43         printf("\n");
44     }
45     system("pause");
46 }
再来看一看可怜的中奖概率吧,也不能太天真,代码还是要老老实实敲:
 
  • 一等奖:1/(33x32x31x30x29x28x16) = 1/12759183360‬ = 7.837492195111773e-11,也就是10亿人有0.7 个人中奖(计算不一定准确,是我的理解)
  • . . .
 
理想太丰满,显示太骨感。
 
不怕天上掉馅饼没运气接,就怕被砸个啥好歹
 
 
 

猜你喜欢

转载自www.cnblogs.com/guoyujiang/p/12297480.html