Chinaunix首页 | 论坛 | 博客
  • 博客访问: 301411
  • 博文数量: 54
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 606
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-03 22:43
文章分类
文章存档

2011年(3)

2010年(26)

2009年(2)

2008年(23)

我的朋友

分类: C/C++

2010-10-17 11:18:56

高级语言中带的随机数产生函数是伪随机数,伪随机数的意思是并不是真正意义上的随机数,而是通过某种运算或者在某种程度上产生随机的效果。计算机是一种图灵机,相同的输入必定产生相同的输出。所以,我们必须在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()

阅读(1645) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-18 14:34:08

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com