永发信息网

C使用随机函数时,产生0~1的数,d=(double) rand()/(double)RAND_MAX.能不能使其等于1

答案:1  悬赏:70  手机版
解决时间 2021-08-21 23:21
  • 提问者网友:缘字诀
  • 2021-08-20 23:30
C使用随机函数时,产生0~1的数,d=(double) rand()/(double)RAND_MAX.能不能使其等于1?
最佳答案
  • 五星知识达人网友:梦中风几里
  • 2021-08-21 00:36

//下面这个代码可以测试这个值d = (double)f/(double)RAND_MAX;的范围是[0,1]
#include <stdio.h>
#include <stdlib.h>
int main()
{
int f= rand();
double d = (double)f/(double)RAND_MAX;//你的表达式值

while(d != 1)//测试值是否为1,如果可以输出Test End表示值可以为1
{
f= rand();
printf("%d\n",f);
d = (double)f/(double)RAND_MAX;
}

printf("Test End!\n");
}
测试结果:

从结果看,值RAND_MAX为32767,而rand()函数生成的最大值正好是这个值,所以d可以为1,取值范围为[0,1]
再问: 在有的机器上.由于d是浮点数.是不是有可能大于1
再答: 应该是不会的,f的值是32767,RAND_MAX为32767,所以d的值是其实肯定的,但是通常的float与1比较时确实会用一个精度范围做为限制,这样比较会更有意义
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯