C语言rand()函数的用法

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand((int)time(NULL));
printf("%d\n",rand()*200-100);
return 0;
}
输出一个随机数,范围应该是(-100,100),但程序哪里出错了?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand((int)time(NULL));
printf("%d\n",rand()%200-100);//是求余不是乘积
return 0;
}追问

rand()是产生(0,1)的随机数的吧,那不应该乘200么?

追答

在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-20
你少了1。
这个公式是a+(b-a+1)*rand()/(RAND-MAX+1.0)
这里可以简化,公式是a+rand%(b-a+1)

所以你写得有点杂正确的是,-100+rand%201或-100+201*rand()/(RAND-MAX+1.0)
第2个回答  2013-11-21
#include <stdio.h>
#include <stdlib.h> 
#include <time.h> 
int main()
{
srand((unsigned)time(NULL)); 
printf("%d\n",rand()%(100+100+1)+(-100)); // 范围为-100到100

return 0;
}

第3个回答  2013-11-20
第4个回答  2013-11-20
其实rand是这样用的!
int n;
srand((unsigned)time(NULL));
n=rand()%100;
相似回答