高级语言中带的随机数产生函数是伪随机数,伪随机数的意思是并不是真正意义上的随机数,而是通过某种运算或者在某种程度上产生随机的效果。计算机是一种图灵机,相同的输入必定产生相同的输出。所以,我们必须在C语言随机数的基础上加上某种比较随机的条件,简称种子。这样产生的随机数才会看起来比较随机,而不会每次运行程序的时候是一样的了。
1:srand()和rand()包含于头文件中
2: 1)如果用户在此之前调用过srand(seed),给seed指定了一个值,那么它会自动调用
srand(seed)一次来初始化它的起始值,以后的每次产生随机数都是利用递推关系得到的.
2) 如果用户在此之前没有调用过srand(seed),它会自动调用srand(1)一次。
3:如果每次srand输入的值是一样的...那么每次产生的随机数也是一样的..以固定的一个值作为种子是一个缺点.常用的做法是以time(0)作为种子
4:time(0)返回的是当前的系统时间.以秒为单位..从1970.1.1开始计算.即srand((int)time(0));
例子如下
#include <stdio.h> #include <stdlib.h> #include <time.h> void main(){//会自动调用srand(1)一次 for(int i=0;i<10;i++){ int ran_num=rand() % 6; printf("%d--",ran_num); } }
|
以上程序运行两次,结果分别为:5--5--4--4--5--4--0--0--4--2--
5--5--4--4--5--4--0--0--4--2--
#include <stdio.h> #include <stdlib.h> #include <time.h> void main(){ srand(1); for(int i=0;i<10;i++){ int ran_num=rand() % 6; printf("%d--",ran_num); } }
|
以上程序运行两次,结果分别为:5--5--4--4--5--4--0--0--4--2--
5--5--4--4--5--4--0--0--4--2--
#include <stdio.h> #include <stdlib.h> #include <time.h> void main(){ srand(10);//以一个固定的值作为种子 for(int i=0;i<10;i++){ int ran_num=rand() % 6; printf("%d--",ran_num); } }
|
以上程序运行两次,结果分别为:5--3--2--2--5--2--2--0--2--3--
5--3--2--2--5--2--2--0--2--3--
#include <stdio.h> #include <stdlib.h> #include <time.h> void main()
阅读(1692) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~
chinaunix网友2010-10-18 14:34:08
很好的, 收藏了
推荐一个博客,提供很多免费软件编程电子书下载:
http://free-ebooks.appspot.com
|