Chinaunix首页 | 论坛 | 博客
  • 博客访问: 533981
  • 博文数量: 118
  • 博客积分: 3995
  • 博客等级: 中校
  • 技术积分: 1276
  • 用 户 组: 普通用户
  • 注册时间: 2005-11-15 12:15
文章分类

全部博文(118)

文章存档

2014年(1)

2013年(1)

2010年(6)

2009年(27)

2008年(10)

2007年(33)

2006年(38)

2005年(2)

我的朋友

分类:

2007-11-02 20:47:48

产生随机数
 
产生随机数可以使用读系统时间求模,得到某个范围内的随机数;不过每次读系统时间要使用系统调用,应该
说是比较耗时的。
 
C语言标准库提供了rand和srand来产生随机数,头文件stdlib.h
int rand(void);
void srand (unsigned int seed);
 
rand函数产生一个0至RAND_MAX之间的随机数(RAND_MAX是宏定义,为0x7FFFFFFF,即有符合的最大整数);不过它产生随机数并不真正随机
 
下面的这段程序多次运行的结果相同

#include<stdlib.h>

int main(){
    int i,j;
    for(i=0;i<10;i++){
        j=rand()%10;
        printf("%d\n",j);
    }
}

 
 
正因为这样,所以才需要srand函数,给定一个随机种子;对于给定的一个随机种子,调用rand获得一个随机序列,不同的随机种子可以获得不同的随即序列,这样只有随机种子不同,获得的随机序列肯定不同;未调用srand,则默认随机种子为1.

下面的程序多次运行得到不同的输出

#include<stdlib.h>
#include<time.h>

int main(){
    int i,j;
    srand((int)time((time_t *)0));
    for(i=0;i<10;i++){
        j=rand()%10;
        printf("%d\n",j);
    }
}

time获得公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数
 
阅读(1281) | 评论(0) | 转发(0) |
0

上一篇:尾递归

下一篇:打印螺旋数字

给主人留下些什么吧!~~