main()
{
int i;
srand((int)time(NULL));
for(i = 0; i < 10; i++)
printf("%f\n", randomInRange(0, 100)); // %f instead of %d
}
int randomInRange(int lo, int hi)
{
double d = (double)rand()/((double)RAND_MAX + 1);
int k = (int)(d * (hi - lo + 1));
return k+lo;
}
,它工作得很好
但如果我选择%f,而不是%d,它产生0只
为什么呢?为什么随机数生成器仅使用%d打印值时产生零
一个'float'不一个'int'不是'float' ... – 2013-03-08 09:08:44
因为'printf'不能转换吗?尝试'printf(“%f \ n”,(float)randomInRange(0,100));' – Pubby 2013-03-08 09:09:06
如果编译器支持,我建议你使用'-Wformat'。 – Will 2013-03-08 09:11:10