我正在尝试使用处理绘制带有mean = 0
和standard 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() {
}
答案 0 :(得分:1)
在你的for循环中,你使用int
作为计数器,但是你将它递增0.5。当i
为正且它递增时,0.5被截断并且我保持之前的状态 - 因此循环将永远运行。这是一个有趣的观察,i
确实在负数时增加 - 截断趋于零,因此添加0.5结束添加1.将i
的声明从int i = -4
更改为{{1修复它在我的电脑上。你可能还想增加每次击球的重量,至少是暂时的,以确定是否正在绘制这些点(他们很难看到它们,我不确定它是否在起作用)。