#include<stdlib.h>
#include<time.h>
#include<stdio.h>
#define N 30000
main()
{
float x,y;
int c=0,d=0;
srand(time(0));
while(c++<=N)
{x=rand()/(double)RAND_MAX;
y=rand()/(double)RAND_MAX;
if(x*x+y*y<=1)
d++;
}
printf("pi=%f\n",4*d/N);
}
在visual studio 2010中运行的,菜鸟,不知道错在哪里,帮帮忙!
#include<stdlib.h>
#include<time.h>
#include<stdio.h>
#define N 30000
int main() //标准C++写法
{
double x,y; //不提倡用float,因为你已经显式转换成了double,会丢失数据.
int c=0,d=0;
srand((time_t)time(0)); //强制类型转换
while(c++<=N)
{x=rand()/(double)RAND_MAX;
y=rand()/(double)RAND_MAX;
if(x*x+y*y<=1)
d++;
}
printf("pi=%lf\n",4.000000*d/N);
return 0; //返回值
}追问
#include<time.h>
#include<stdio.h>
#define N 30000
int main() //标准C++写法
{
double x,y; //不提倡用float,因为你已经显式转换成了double,会丢失数据.
int c=0,d=0;
srand((time_t)time(0)); //强制类型转换
while(c++<=N)
{x=rand()/(double)RAND_MAX;
y=rand()/(double)RAND_MAX;
if(x*x+y*y<=1)
d++;
}
printf("pi=%lf\n",4.000000*d/N);
return 0; //返回值
}追问
请问srand((time_t)time(0)); 中的(time_t)是什么意思?
追答强制转换到time_t类型
温馨提示:答案为网友推荐,仅供参考
第1个回答 2012-02-06
printf("pi=%f\n",4*d/N);
改成printf("pi=%f\n",4.0*d/N);
就可以了,因为输出的表达式类型为整数
改成printf("pi=%f\n",4.0*d/N);
就可以了,因为输出的表达式类型为整数
第2个回答 2012-02-06
#include<stdlib.h>
#include<time.h>
#include<stdio.h>
#define N 30000
void main()
{
float x,y;
int c=0,d=0;
srand(unsigned(time(0)));
while(c++<=N)
{x=rand()/(double)RAND_MAX;
y=rand()/(double)RAND_MAX;
if(x*x+y*y<=1)
d++;
}
printf("pi=%f\n",4*d*1.0/N);
}
4*d/N这里的除法是整数相除的,除出来的结果是整数的,应该用浮点数相除
#include<time.h>
#include<stdio.h>
#define N 30000
void main()
{
float x,y;
int c=0,d=0;
srand(unsigned(time(0)));
while(c++<=N)
{x=rand()/(double)RAND_MAX;
y=rand()/(double)RAND_MAX;
if(x*x+y*y<=1)
d++;
}
printf("pi=%f\n",4*d*1.0/N);
}
4*d/N这里的除法是整数相除的,除出来的结果是整数的,应该用浮点数相除
第3个回答 2020-02-08
#include<stdlib.h>
#include<time.h>
#include<stdio.h>
#define
N
30000
int
main()
//标准C++写法
{
double
x,y;
//不提倡用float,因为你已经显式转换成了double,会丢失数据.
int
c=0,d=0;
srand((time_t)time(0));
//强制类型转换
while(c++<=N)
{x=rand()/(double)RAND_MAX;
y=rand()/(double)RAND_MAX;
if(x*x+y*y<=1)
d++;
}
printf("pi=%lf\n",4.000000*d/N);
return
0;
//返回值
}
#include<time.h>
#include<stdio.h>
#define
N
30000
int
main()
//标准C++写法
{
double
x,y;
//不提倡用float,因为你已经显式转换成了double,会丢失数据.
int
c=0,d=0;
srand((time_t)time(0));
//强制类型转换
while(c++<=N)
{x=rand()/(double)RAND_MAX;
y=rand()/(double)RAND_MAX;
if(x*x+y*y<=1)
d++;
}
printf("pi=%lf\n",4.000000*d/N);
return
0;
//返回值
}