確率は限りなく低く
1988年の統計のよれば、同年における10万人あたりの交通事故死亡者数、交通事故死傷者数は次の通りであった。
| 北海道 | 東京 | 大阪 | 福岡 | |
| 交通事故死亡者数 | 9.7 | 4.0 | 5.7 | 7.8 |
| 交通事故死傷者数 | 526.6 | 508.7 | 703.8 | 867.2 |
各都道府県において、人口10万人の都市を考えるとき、
(1),1年間の交通事故死亡者数が10人未満である確立を求めよ。
(2),1日の交通事故死傷者数が5人未満である確率を求めよ。
交通事故とかの分布は基本的にポアソン分布だったりするので、とりあえずポアソン分布で考えると
な式でもとまります。
つまり、求めたい確立をPとすると、(1)では、
っつーなるわけですよ。これをフツーに計算しても大変なので、コンピュータさんの力をかりることに。
ちなみに(2)も大体同じように解きます。
#include <stdio.h>
#include <math.h>
int fact(int i)
{
if (i == 0 || i == 1)
return 1;
return fact(i-1) * i;
}
int main(void)
{
double lam1[] = {9.7, 4.0, 5.7, 7.8};
double lam2[] = {526.6, 508.7, 703.8, 867.2};
char *city[] = {"北海道", "東京", "大阪", "福岡"};
int i, k;
double p;
printf("1年間の交通事故死亡者数が10人未満である確率\n");
for (i = 0;i < 4;i++) {
p = 0.0;
for (k = 0;k < 10;k++)
p += exp(-lam1[i])*pow(lam1[i], k)/fact(k);
printf("%-6s : %f\n", city[i], p);
}
printf("1日の交通事故死傷者数が5人未満である確率\n");
for (i = 0;i < 4;i++) {
lam2[i] /= 365;
p = 0.0;
for (k = 0;k < 5;k++)
p += exp(-lam2[i])*pow(lam2[i], k)/fact(k);
printf("%-6s : %f\n", city[i], p);
}
return 0;
}
出力:
1年間の交通事故死亡者数が10人未満である確率
北海道 : 0.495979
東京 : 0.991868
大阪 : 0.935183
福岡 : 0.741109
1日の交通事故死傷者数が5人未満である確率
北海道 : 0.983992
東京 : 0.985994
大阪 : 0.953591
福岡 : 0.907131
うん、巻末の解答と同じ結果が得られました。バンザイ。
でも、ポアソン分布だと気づかなければ解けません(普通は気づきますが)
ふぅ~、テストに出されたら困るタイプの問題だな。