刚刚吃饭的时候在csdn上看到一个简易的双色球模拟器题目 正好拿来练习一下

  本题目所用到的知识点并不多,主题思路就是 生成随机数程序生成一个随机数,每次存到数组里的同时要检查一下与数组内前几个数是否相等,不相等就直接添加,若是相等的话,记得一定让数组下标退回一个,继续重新生成。

 

  题目如下:

编写程序,实现双色球的随机生成,并输出。
要求:用数组保存,数组类型为整型;输出为7个数据,其中前面6个数据
不大于33且各不相同;最后一个数据不大于16处理:使用int rand(void)
或void srand(unsigned seed)函数实现随机数、每生成一个就查找是
和前面的数据相同,若不同,加入,否则重新生成。
---------------------
作者:杨鑫newlfe
来源:CSDN
原文:https://blog.csdn.net/u012965373/article/details/45216937
版权声明:本文为博主原创文章,转载请附上博文链接!

 

  因为第一次接触随机数生成,关于随机数知识点如下:

srand函数可以为rand函数设一个种子,一般若是需要真随机数

种子为time(NULL),time函数可从返回值返回也可以从指针返回,

返回的是从1970年1月1日至现在的秒数,因为UNIX时间戳是以1970年1月1日0点为计时起点时间的

 

 

rand函数可以产生小于32767的随机数,
如果需要的随机数范围超过了32767,可以用rand()*rand()来产生,举例如下:

产生0~32767范围内的随机数:int num = rand();

产生0-20范围内的随机数:int num = rand()%20;

产生1~20范围内的随机数:int num = rand()%20+1;

产生0~10000000范围内的随机数:int num = rand()*rand()%10000000;

个人喜欢第二种,好控制范围。

代码:

int num = rand()%22;
printf("%d", num);

需要的头文件是:#include <stdio.h>

  完整代码如下:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int num[7];
 4 int find(int number,int temp);
 5 int main()
 6 {
 7     int i;
 8     int number = 0;
 9     for(i = 0;i < 6;i++)
10     {
11         number = rand()%33;
12         if(find(number,i) == 0)
13             num[i] = number;
14         else
15             i--;
16     
17     }
18     num[6]= rand()%16;
19     printf("您这期的双色球号码是:\n");
20         for(i = 0; i < 7; i++)
21         {
22                 printf("%d ",num[i]);
23         }
24         return 0;
25 
26     
27 }
28 int find(int number,int temp)
29 {
30     int j;
31     for(j = 0;j < temp ;j++)
32     {
33         if(number == num[temp])
34             return 1;
35     }
36     return 0;
37 }

2019-04-19 11:12:14 编程小菜鸟反思,大佬勿喷,谢谢!

posted on 2019-04-19 11:13  coding小菜鸟  阅读(522)  评论(0编辑  收藏  举报