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

标签 c

我正在为直方图生成正常分布的数字。这是我的两个功能。第一个用于生成,第二个用于将它们转换为正态分布。由于某种原因,当我进行测试 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/

相关文章:

C fifo链表字符推送

在没有 select() 的情况下检查 C 中的套接字是否断开连接

c - 如何在 Makefile 中使用带有 ':' 的变量?

c - 用于基本数据结构的库,例如 C 中的队列

c - 多维数组中的字符串初始化

c - 为什么这个程序不能与 C 语言中的操作系统重定向命令一起使用?

c - termios.h 如何使用特殊字符

c - scanf 跳过函数

html - CGI C中处理html表单发送的POST数据

c - 在 C 中的 malloc 字符串之前保留元数据是否安全?