C语⾔之随机数函数(rand())的使⽤⽅法
在程序设计中,难免会使⽤到随机值函数,其原理与语法⼤多类似,接下来以C语⾔为例介绍其随机值函数 rand() ⽤法。原理
引⽤百度百科,⾸先,需要包含头⽂件:
#include <stdlib.h>
rand()函数是按指定的顺序来产⽣整数,因此每次执⾏上⾯的语句都打印相同的两个值,所以说C语⾔的随机并不是真正意义上的随机,有时候也叫伪随机数,使⽤ rand() ⽣成随机数之前需要⽤随机发⽣器的初始化函数 srand(unsigned seed)(也位于 stdlib.h 中)进⾏伪随机数序列初始化,seed ⼜叫随机种⼦,通俗讲就是,如果每次提供的 seed 是⼀样的话,最后每⼀轮⽣成的⼏个随机值也都是⼀样的,因此叫伪随机数,所以需要每次提供不同的 seed 达到完全的随机,我们通常⽤时间函数 time(NULL) 作为 seed ,因为时间值每秒都不同,这个函数需要包含以下头⽂件:
#include <time.h>
理论太泛,下⾯⽤例⼦分析理解。
举例分析
先来理解以下伪随机数,编译以下代码:
1. #include <stdio.h>
2. #include <stdlib.h>
3. #include <time.h>
4. int main()
5. {
6. srand(1);
7. int i;
8. for (i = 0; i < 10; i++)
9. printf("%d, ", rand()%11);
10. }
运⾏结果
8, 9, 9, 1, 7, 5, 5, 10, 1, 0,
然后⽆论运⾏多少次,结果都依然是以上随机数,不会改变,因为每次设置的种⼦ seed 都是 1 。
但是假如把 seed 换成 time(NULL),每次就不⼀样了,如下:
1. #include <stdio.h>
2. #include <stdlib.h>
3. #include <time.h>
4. int main()
5. {
6. srand(time(NULL));
7. int i;
8. for (i = 0; i < 10; i++)
9. printf("%d, ", rand()%11);
10. }
结果是就变了,并且每次都不⼀样:
6, 3, 4, 5, 5, 9, 8, 10, 10, 4,
6, 4, 2, 4, 3, 2, 5, 1, 2, 9,
c语言round函数怎么使用这⾥的 time(NULL) 的结果是⼀个类似于 1524655706 的数字,并且每秒都在递增 1,也就达成了 srand() 的 seed 不断变化的⽬的,不断⽣成新的随机数。
拓展
这⾥注意⼀下例⼦中函数 rand() 的⽤法,函数括号内不需要加参数,如果直接调⽤ rand() 的话会⽣成下⾯这样的数:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论