0

我正在尝试使用处理来绘制高斯曲线mean = 0standard deviation = 1但是当我的代码运行时,屏幕上没有任何内容(甚至没有背景)。

这是我的代码:

float x, y, mu, sigma;

void setup() {
  size(900, 650);
  background(255);
  stroke(0);
  strokeWeight(1);

  mu = 0.0;
  sigma = 1.0;

  for(int i = -4; i < 4; i += 0.5) {
    x = i;
    y = (1/(sigma * sqrt(2 * PI)))*(exp((-1 * sq(x - mu)) / (2 * sq(sigma)) ));

    x = map(x, -4, 4, 0, width);
    y = map(y, 0, 1, 0, height);
    point(x, y);
  }
}

void draw() {

}
4

1 回答 1

1

在您的 for 循环中,您使用 anint作为计数器,但您将其增加 0.5。当i是正数并且它增加时,0.5 被截断并且 i 保持之前的状态——所以循环永远运行。这是一个有趣的观察结果,i当它为负数时确实会增加——截断趋向于零,因此添加 0.5 最终会添加 1。将ifrom的声明更改为在我的计算机int i = -4float i = -4修复它。您可能还想至少暂时增加笔画重量,以验证是否正在绘制点(它们对我来说很难看到,而且我一开始不确定它是否有效)。

于 2013-10-04T17:06:26.877 回答