【分支和循环(下)】
1.分支和循环(下) 一.随机数生成 (1).rand (2).srand (3)time (4)设置随机数的范围 二.猜数字游戏实现 分支和循环(下) 在本节内容当中,主要讨论了关于随机函数相关的知识点并做一些应用,也就是说讨论关于猜数字的游戏。 一.随机数生成 随机函数主要有rand,srand,函数,我们将会讨论什么是随机数种子,为何说rand函数不是我们的随机函数,以及用time函数实现srand的随机种子,进而实现了对于随机数的求解。 (1).rand C语言提供了求解随机数的方法: int rand(void); 但是呢,由于rand函数是为随机函数是通过某种算法生成的随机数,不是真正的随机数,下面就为大家试一下: #include <stdio.h> #include <stdlib.h> int main() { printf("%d\n", rand()); printf("%d\n", rand()); printf("%d\n", rand()); printf("%d\n", rand()); printf("%d\n", rand()); return 0; ) 由此可以知道的,是rand两次所生成的结果是一样的,那么可以说,rand不是一个正常的生成随机数的函数,因为他默认的随机种子数是1,如果要生成不同的随机数,就要让种子是变化的。 (2).srand 下面我就介绍关于srand函数,只要在使用rand之前,使用srand函数,通过 srand函数的参数seed来设置rand函数生成随机数的时候的种子,只要种子在变化,每次生成的随机数序列也就变化起来了, 那也就是说给srand的种子是如果是随机的,rand就能生成随机数;在生成随机数的时候又需要一个随 机数,这就矛盾了. (3)time 因为时间是经常变化的,在c当中有一个函数是time,因此我们可以使用它时间作为随机数种子。在C当中的定义如下: time_t time (time_t* timer); 如果 timer 是NULL,就只返回这个时间的差值。time函数返回的这个时间差也被叫做:时间戳。 使用time函数的时候,需要包含头文件:time.h 书写生成随机函数的代码如下: #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { //使用time函数的返回值设置种子 //因为srand的参数是unsigned int类型,我们将time函数的返回值强制类型转换 srand((unsigned int)time(NULL)); printf("%d\n", rand()); printf("%d\n", rand()); printf("%d\n", rand()); printf("%d\n", rand()); printf("%d\n", rand()); return 0; } 得到的结果是: 可以知道的是,两次得到的随机数并不像第一次那样—二次得到的,是一样的,这个函数可以成功的实现对于随机数的求解,这就是我们需要的函数。 ...