Chinaunix首页 | 论坛 | 博客
  • 博客访问: 128385
  • 博文数量: 31
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 275
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-08 15:00
文章分类

全部博文(31)

文章存档

2009年(15)

2008年(16)

我的朋友

分类:

2009-04-01 09:16:01

rand是函数  如同printf函数  要调用它的话,我们只需把它的头文件写上即可.
rand的头文件是 stdlib.h

randomize();  这是它的格式.如没有这个函数,所产生的是伪随机数,只有第一次是随
机,以后都生成这个数.加了这个所产生的是真随机数(也就是每一次都不一样)
 
-----------------------------------------------------------
#include
#include

int main(void)
{
    int i;
    for(i=0; i<10; ++i)
    printf("%d\n", rand()%100);
    scanf("%d", &i);
}
在相同的操作平台下,计算方法是一定的.再加上随机种子不变,所以得出的结果不变.如果把这段代码用在别的计算机中,这个数和你的计算机又会不一样.
----------------------------------------------------------
#include
#include
#include
#define randomize() srand((unsigned)time(NULL))
int main(void)
{
    int i;
    randomize();
    for(i=0; i<10; ++i)
    printf("%d\n", rand()%100);
    scanf("%d", &i);
}
加上randomize()时,所得到的随机数还是称为随机数,看上去好像很随机,实际上还是伪随机数.为什么会这样呢?因为随机种子这时是来自系统时钟,换句话说:来自计算机主板上的定时器/计数器在内存中的计数值.这个值是不断变化的.因为定时器/计数器计算系统的当前时间,每来一个时钟脉冲,这个值会加1的.接着这个值会根据计算机中一定的算法来得出看上去比较随机的数.
-----------------------------------------------------------
如果要得出一个看上去比较随机的数.可以:
rand() 和 srand((unsigned)time(NULL) 配合使用

一个通用的公式是:
要取得[a,b)之间的随机整数,使用(rand() % (b-a))+ a (结果值将含a不含b)。
在a为0的情况下,简写为rand() % b。

用rand() / double(RAND_MAX)可以取得0~1之间的浮点数(注意,不同于整型时候的公式,是除以,不是求模)这不是伪随机浮点数最好的实现方法,不过可以将就着用用…


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