アプリ版:「スタンプのみでお礼する」機能のリリースについて

半径1の円に内接する三角形の面積を10の6乗回計算し、その最大値と平均値を求めるというプログラムを、次のように作成しました。

int main(int argc, char **argv)
{
srand48(time(NULL));
int i, j;
double sum, max;
for(j = 0; j < 1000000; j++) {
double s[j];
Vec3 v[3], va, vb;
double th[3];
for (i = 0; i < 3; i++) {
th[i] = 2 * M_PI * drand48();
v[0].x = cos(th[0]);
v[0].y = sin(th[0]);
v[0].z = 0;
v[1].x = cos(th[1]);
v[1].y = sin(th[1]);
v[1].z = 0;
v[2].x = cos(th[2]);
v[2].y = sin(th[2]);
v[2].z = 0;
va = vsub(v[1], v[0]);
vb = vsub(v[2], v[1]);
}
s[j] = vabs(voprod(va, vb)) / 2;
max = s[0];
if(s[j] > max){
max = s[j];
}
sum = sum + s[j];
}
printf("Maximum = %f\n",max);
printf("Average = %f\n",sum/1000000);
return (0);
}
結果、平均値については理論値に近い値が出たのですが、最大値は取りうるはずのない値が何度も算出されました(理論値を超えた値、平均値より小さい値など。)どこが間違っているのでしょうか。

A 回答 (1件)

for文の中で


max = s[0];
やってどうすんの
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!