300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > rand在c语言那一个函数库 浅析C语言中的rand函数和srand函数(一)

rand在c语言那一个函数库 浅析C语言中的rand函数和srand函数(一)

时间:2019-12-30 06:09:09

相关推荐

rand在c语言那一个函数库 浅析C语言中的rand函数和srand函数(一)

我们在编程实现算法的过程中,往往需要使用到随机数。由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?)。所以计算机生成的是伪随机数,供我们使用。

我们使用C语言的rand函数,生成的也是伪随机数。

一个简单的示范如下:

1 #include

2 #include

3 #include

4

5 int

6 main(int argc, char**argv)7 {8 //以机器当前的时间来构造生成伪随机数的"种子" 。

9 srand((unsigned int)time(NULL));10 inti;11 //打印10个伪随机数

12 for (i = 0; i < 10; i++) {13

14 printf("%d", rand());15 }16 printf("\n");17

18 system("pause");19 return 0;20 }

很显然,如果不使用第九行的srand函数,那么我们的程序每次打印的10个伪随机数序列是一样的,在本机上始终是41, 18467, 6334, ......。这是由于C语言是利用linear congruential generator作为生成器来生成伪随机数,但是这个生成器生成伪随机数,需要一个“种子”来进行运算。而如果我们仅仅调用rand函数,那么我们始终使用的是C语言自己设置的固定的“种子”来生成伪随机数,所以生成的伪随机数的序列肯定是一模一样的咯。

当我们使用srand,以时间为参数,为rand提供一个不一样的“种子”,那么由于每次的“种子”都不一样

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。