c语言 为什么rand()/(float)RAND_MAX;能产生随机数

#include<stdlib.h>
#include<time.h>
#include<stdio.h>
#define N 1000000
main()
{
float x,y;
int a=0,b=0;
srand((unsigned int)time(0));
while(a++<=N)
{
x=rand()/(float)RAND_MAX;
y=rand()/(float)RAND_MAX;
if((x-0.5)*(x-0.5) + (y-0.5)*(y-0.5)<=0.25)
b++;

}

printf("pi=%f\n",4.0*b/N);
}

严格的说这是伪随机数;虽然没有详细探究这种随机数产生的机制,但是个人认为srand()函数和rand()函数应该共有一个变量的,而每次调用rand()都会获取srand()根据time()产生的数用来生产新的数;由于时间是变化的,所以最终导致获得的数是“随机的”。(个人理解,仅供参考)追问

请问为什么可以产生0到1的随机数呢?

温馨提示:答案为网友推荐,仅供参考
相似回答