@eurosellerさんのツイート
都市伝説のような子どもの身長の式。自分の例で試してみて!: (父親の身長+母親の身長)÷2+13センチ=生まれてくる男の子の身長,(父親の身長+母親の身長)÷2-9センチ=生まれてくる女の子の身長
http://twitter.com/euroseller/status/21114285782470657
が気になって(うちは女の子だから(160+170)/2-9=156センチ???)pythonの練習もかねて計算してみた。
実際には2010年には158cmに達しているのでこれでは少なすぎる、、、でも最初の落ち込みがなければ結構いい線いっているかも。
ところが、個々の事例で行くと女の子の身長が低めに出過ぎるような気がする。
逆に男の子は高すぎか?
下記Python プログラム。googleXYChartは金融工学と経済学とプログラミングからコピペしました。
#encoding:utf-8
import random
import googleXYChart
def average(values):
"""Computes the arithmetic mean of a list of numbers.
>>> print average([20, 30, 70])
40.0
"""
return sum(values, 0.0) / len(values)
def hight(avhight,n):
## generate random hights in normal variate shape.
avhight=avhight
n=n
hight=[random.normalvariate(avhight,54) for x in range(n)]
## Standard diviation came from;
## http://www.hql.jp/project/size1992/faq.html#3-4
## 20s 1582mm
## 30s 1571mm 55mm
## 40s 1545mm 53mm
## 50s 1524mm 53mm
## 60s 1497mm 54mm
## 70s 1460mm 55mm
## 80s 1435mm 53mm
return hight
def makeChild(man,woman,n):
## man and woman object makes their child.
## Their hight is following the fomula;
## man[x]=(man[x]+woman[x])/2+130
## woman[x]=(man[x]+woman[x])/2-90
man=man
woman=woman
temp=man[:]
n=n
for x in range(n):
temp[x]=(man[x]+woman[x])/2+130
woman[x]=(man[x]+woman[x])/2-90
man=temp[:]
random.shuffle(man,random.random)
random.shuffle(woman,random.random)
return man, woman
n=1000
m=3
man=hight(1634,n)
woman=hight(1532,n)
avman=[]
avwoman=[]
gen=[x for x in range(m)]
for i in range(len(gen)):
man, woman=makeChild(man,woman,n)
avman.append(average(man))
avwoman.append(average(woman))
avman=[gen[:],avman[:]]
avwoman=[gen[:],avwoman[:]]
manChart=googleXYChart.googleXYChart(avman)
manURL=manChart.getChartURL()
womanChart=googleXYChart.googleXYChart(avwoman)
womanURL=womanChart.getChartURL()
print manURL
print womanURL