c语言中如何生成1个0到1的随机数

如题 谢谢了

C语言中生成1个0到1的随机数可以执行语句:float b=rand()/(RAND_MAX+1.0);

解析:

标准C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。rand()函数没有输入参数,直接通过表达式rand()来引用;

用函数rand取得的随机数除以(RAND_MAX+1.0),即可确保得到的结果在0到1之间。ISO IEC 9899 2011 (C11)标准中未规定 RAND_MAX 的具体数值。但该标准规定了RAND_MAX 的值应至少为32767。编程的时候,不应该对 RAND_MAX 的具体数值做任何假设。

扩展资料:

相关说明:

1、因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机。

2、为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过为随机数生成器提供一粒新的随机种子。函数 srand()(来自stdlib.h)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器。

3、随机种子(Random Seed)是计算机专业术语,一种以随机数作为对象的以真随机数(种子)为初始条件的随机数。一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数。

参考资料来源:百度百科-随机函数

参考资料来源:百度百科-RAND_MAX

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-29
float b=rand()/(RAND_MAX+1.0);
printf("%f\n",b);

注释:
stdlib.h头文件中有宏#define RAND_MAX 0x7fff
rand()产生一个0到0x7ffff即0到32767之间的随机数
rand()/(RAND_MAX+1.0)就等于一个0到1之间的小数了,因为rand()最大是32767最小是0,再除以32768就是一个0到1之间的小数(不能等于1),再乘以10就是一个0到10之间的数了(不等于10).最后再加1,就成了一个求1到10之间随机数的式子了.本回答被提问者采纳
第2个回答  2020-02-07
#include
void
main(void)
{
int
i;
srand(
(unsigned)time(
NULL
)
);/*这一句很重要,如果没有的话,每次产生的数据都是不变的。*/
for(i=0;i<10;i++)
{
printf("%d
",rand()%2);/*产生10个0到1的随机数*/
}
}
相似回答