//---------------------------------------------------------------------------
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的天津网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
#include stdio.h
#include stdlib.h
#include time.h
double rnd(void)
{
static int fg=1;
int rd;
if (fg) {
srand(time(NULL));
fg=0;
}
return (double)(rand()%900+100)/100;
}
int main(void)
{
int i;
for (i = 0; i 10; i++) //输出10个[1.00,10.00]区间内的小数
printf("%.2f\n",rnd());
return 0;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
rand()是生成一个从0到RAND_MAX的随机数,所以要生成小数,除以RAND_MAX就一定是一个小数:
(double)rand()/RAND_MAX
什么叫随机数?就是不确定的数,不过这个表达式,可以肯定的是从0到1的小数。
它的返回值就是求取随机的值,所以如果没有对数有要求,直接这样定:
printf("%d", rand());就能输出一个随机数.但如果对数有要求,如小数或在一定值以内:
小数:rand()+rand()/100.0 //100.0后面的.0必须写,100是说明求两位小数,你可以自己加大.
一定范围:rand()%10+0 //10是顶和底的差,0是底,就是说求10到20之间的数就是:rand()%10+10
但是调用它必须先调用srand()来生成随机种子,如果你没调用它,系统会自动调用.但是srand是有个参数的,种子就是根据这个参数来定的,所以这个参数决定着生成的随机数.如果你在代码里写死了它:srand(10);那这样rand生成的随机数就也被定格在了一定量,所以不要这样用.要这样写:
srand(time(NULL));time的返回值是当前系统时间.因为时间不同,所取的数值也就不同.这样随机数就真正的随机了.
time在time.h中声明
rand,srand在stdilb.h中声明.
VC环境下要比TC麻烦一些
格式如下:
#include "time.h"
#include "stdlib.h"
#include "stdio.h"
void main()
{
double x;
srand((unsigned)time(0)); //根据时间来产生随机数种子
x=(double)rand()/RAND_MAX*49+1.0;//(double)rand()/RAND_MAX产生0到1之间的随机数,乘以49,加上1.0就是1到50的随机数。
printf("%lf",x);
}