gpt4 book ai didi

c - 生成正态分布直方图的数字?

转载 作者:行者123 更新时间:2023-11-30 18:58:33 25 4
gpt4 key购买 nike

我正在为直方图生成正常分布的数字。这是我的两个功能。第一个用于生成,第二个用于将它们转换为正态分布。由于某种原因,当我进行测试 printf 时,它只是返回最小负数。有人知道这件事吗?谢谢!

double s, u[1000], v[1000], z;
int transformed[1000];

void generateec(){
srand( time(NULL) );
for(int i = 0; i < 1000; ++i)
{
u[i] = rand() % 7-3;
v[i] = rand() % 7-3;
}

}

void transform(){
generateec();




for(int i = 0; i < 1000; ++i)
{
s = (u[i]*u[i])+(v[i]*v[i]);
transformed[i] = u[i]*(sqrt( (-2.0 * log(s) ) / s));

}

printf("%d %d %d \n", transformed[0], transformed[500], transformed[600]);

}

谢谢大家!

最佳答案

在:

for(int i = 0; i < 1000; ++i)
{
u[i] = rand() % 1;
v[i] = rand() % 1;
}

表达式:

rand() % 1

总是产生0

编辑:

由于程序是同时编辑的,现在的问题是程序中的sqrt函数的参数可能是负值。如果 sqrt 参数为负数,则会发生域错误,并且 sqrt 将返回实现定义的值。

关于c - 生成正态分布直方图的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16004244/

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