刚刚吃饭的时候在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 编程小菜鸟反思,大佬勿喷,谢谢!