gpt4 book ai didi

c - 具有重复答案和错误答案的正态分布计算

转载 作者:行者123 更新时间:2023-12-02 02:50:45 28 4
gpt4 key购买 nike

我正在编写一个程序来计算此处提供给我的正态分布函数的值:

Normal Distribution Equation

该程序应该要求用户提供上面显示的正态分布的平均值 μ 和标准差 σ。然后程序会询问xN 值,然后一一询问x 的每个值。在每个值 x 之后,它会写出相应的函数值。

到目前为止,这是我的代码:

#define _USE_MATH_DEFINES
#include <stdio.h>
#include <math.h>

int main() {

int j;
double u, stddev, N, result, x;

printf("Enter u and stddev for the Normal Distribution:\n");
scanf("%lf %lf",&u, &stddev);
printf("Enter how many values of x (N) for the Normal Distribution:\n");
scanf("%lf",&N);

for (j=0; j<N; j++) {

printf("Enter a value for x: \n");
scanf("%lf",&x);
result = ((1)/(stddev*sqrt(2*M_PI)))*exp(-(1/2)*((x-u)/stddev)*((x-u)/stddev));
printf("%.6lf\n", result);

}
}

我基本上完成了,但与我从计算器得到的答案相比,程序给我的答案是错误的。例如,当我使 N = 3 时,无论我为 x 的 3 个值输入什么,它给我的每个答案都是相同的,而它们不应该是。

所以我知道我的问题在于这行代码:

result = ((1)/(stddev*sqrt(2*M_PI)))*exp(-(1/2)*((x-u)/stddev)*((x-u)/stddev));

我只是在程序中写错了函数吗?我必须这样做,因为它不起作用。

最佳答案

您的代码干净且功能齐全。到目前为止,一切顺利。

关于哪一行需要更改是正确的 - 问题是使用整数除法会得到一个整数,因此 1/2 会得到 0 的值。这可以通过使用单个 double 值来解决:0.5,或使用 double 值 1.0/2.0 进行除法。

result = ((1)/(stddev*sqrt(2*M_PI)))*exp(-(0.5)*((x-u)/stddev)*((x-u)/stddev));

我在进行这些更改后测试了您的代码 try it online , 它们与 wolfram alpha 上的公式完美匹配,以及您在评论中所说的内容。

例如:

μ=2, σ=3, x=7 results in 0.033159
μ=3, σ=7, x=0 results in 0.051991
μ=4, σ=4, x=4 results in 0.099736

关于c - 具有重复答案和错误答案的正态分布计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52357664/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com