c语言用蒙特卡洛方法求定积分 大佬帮忙看看哪里不对

Python021

c语言用蒙特卡洛方法求定积分 大佬帮忙看看哪里不对,第1张

#include<stdio.h>

#include <time.h>

#include <stdlib.h>

double jifen(int, int, int, int)

int main()

{

    int a,b,d,n

    double c

    srand((unsigned)time(NULL))

    printf("请输入a b\n")

    scanf("%d %d",&a,&b)

    printf("请输入n\n")

    scanf("%d",&n)

    d=1+b*b

    c=jifen(a,b,d,n)

    printf("积分为%lf\n",c)

    return 0

}

double jifen(int a,int b,int d,int n)

{

    int i,m=0

    double x,y,result

    for(i=1i<=ni++){

        x=(double)rand()/(double)(RAND_MAX)*(b-a)+a

        y=(double)rand()/(double)(RAND_MAX)*d

        if(y<=1+x*x) m++

    }

    result=(double)m*(b-a)*d/n

    return result

}

如上 使用double 在最后加入result的强制转换

另外在x定义那里,改为(rand/rand_max)*(b-a)+a

因为是a,b 之间的距离随机加a,当a不为0时原来的式子是错的。

#include "stdio.h"

#include "time.h"

#include "math.h"

#include "dos.h"

#define PI 3.1415926

main()

{ double x,y,sum=0

int i

for(i=0i<=100i++)

{ srand(time(0))

x=rand()%10000

x=x/10000*PI/2

sleep(1)

srand(time(0))

y=rand()%10000

y=y/10000

if(y<=sin(x)) sum++

clrscr()

printf("%d%",i)

}

clrscr()

printf("%f ",sum/--i)

}

TC上没问题 VC上有点问题~~~~