C语言产生1~10随机小数

只要两位,不要六位小数

//---------------------------------------------------------------------------

#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;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-05
产生随机数函数(可在函数速查中可知):randomize(),srand(),rand(),random().
void randomize(void)
通过time函数来得到一个随机数,此数将成为起始发生数据
(stdlib.h | time.h)
void srand(unsigned number)
该函数和rand函数配合使用,产生随机数的起始发生数据
int rand(void)
产生一个随机数(0到 0x7fff 之间)
(stdlib.h)
int random(int num)
得到一个在0和参数num之间的随机数
(stdlib.h)
随机数生成的原理
“计算机产生的随机数一般都只是一个周期很长的数列,不是真的随机数。也就是说,随机数一般是伪随机数,每个随机数都是由随机种子开始的一个已定的数列(周期很长)。一般地,为了随机数更真一点,随机种子在系统中通常是参照系统时钟生成的。”
以上引用了别人的话。有几个关键点:一是所谓的随机数是伪随机数,二『伪随机数生成器返回的每一个值完全由它返回的前一个值所决定数(最终,该种子决定了一切)』。所以产生随机数,首先要解决随机数种子的问题。下面举几个可能遇到的问题:
一、两次运行产生的随机数列相同

……

for(i=0;i<10;i++) printf("%d",rand());

……

上面的程序本意是每次运行后,屏幕输出10个随机数。但如果紧紧只是这段代码,那后果就是,无论运行多少次,每次产生的这10个随机数都和前一次生成的10个数一一对应。

可做如下修改:

……

randomize();

for(i=0;i<10;i++) printf("%d",rand());

……
如此,每次运行产生的随机数列就是不同的啦。因为randomize()是以系统时间为随机数种子的。如果两次运行时间间隔大于一秒,那么种子就会不同。本回答被提问者和网友采纳
相似回答