#include
#include
#include
double countPI(double n)
{
int i = 0;
int count = 0;
double pi = 0;
double x = 0;
double y = 0;
srand((unsigned)time(NULL));
while (i < n)
{
x = rand() / (double)(RAND_MAX);//RAND MAX是什么意思
y = rand() / (double)(RAND_MAX);
if ((x * x) + (y * y) < 1)
{
count++;
}
i++;
}
pi = 4 * (count / n);
return pi;
}
int main(){
double pi = 0;
pi = countPI(100000);
printf("%lf\n",pi);
return 0;
}
RAND_MAX 指的是C语言标准库 <stdlib.h> 中定义的一个宏。经预编译阶段处理后,它展开为一个整数类型的常量表达式。RAND_MAX 是 <stdlib.h> 中伪随机数生成函数 rand 所能返回的最大数值。
rand() / (double)(RAND_MAX); 即为 0.0~1.0 之间的随机浮点数
RAND_MAX [1] 指的是C语言标准库 <stdlib.h> 中定义的一个宏。经预编译阶段处理后,它展开为一个整数类型的常量表达式。RAND_MAX 是 <stdlib.h> 中伪随机数生成函数 rand 所能返回的最大数值。
RAND_MAX就是随机数的最大值
定义如下:
#define RAND_MAX 0x7fff
代码写法是为了产生一个0-1之间的随机浮点数
rand()产生一个0到0x7ffff即0到32767之间的随机数,RAND_MAX即为0x7ffff。所以rand()/RAND_MAX可表示为在[0,1]区间内的随机数,rand()/(RAND_MAX+1)可表示为在[0,1)区间内的随机数。
供参考:https://baike.baidu.com/item/RAND_MAX
RAND_MAX 是一个常量,它表示了 rand() 函数能够生成的最大随机数。在这段代码中,rand() / (double)(RAND_MAX) 用于生成 0 到 1 之间的随机小数。