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