id:svnseeds:20050112 にある、31〜35 歳の人が結婚しにくいと言う話。
なんとなく、正しくない気がする。
- 31〜35歳よりも年上の人は、年下の人と結婚しやすい
- 31〜35歳よりも年下の人は、年上の人と結婚しやすい
の二点には同意するが、31〜35歳の女性(男性)への男性(女性)の供給が不足しているという話は、正しくない気がする。
しかし。
気がするだけで、どう正しくないと思うのかを説明できない。うー。
……。
で。考えてみたんだが。
31〜35歳 の人々は、そうでない人々に比べて、自分の年齢に近い人と出会う確率が高い。だからむしろ、結婚しやすい。という効果も無視できないと思う。
どうだろう。
- 出会いは等しく訪れる。
- 性別は気にしないで結婚する
- 結婚するかどうかは、年齢と乱数で決める
という前提で、シミュレータというのもおこがましいような計算をしてみたら
NUM=10000
@people = (1..NUM).map{ |x| 20+rand(10)+rand(10)+rand(10) }
def count_stat( a )
r=[]
(a.min..a.max).each{ |i|
r[i] = a.select{ |x| x==i }.size
}
r
endstat0 = count_stat @people
(NUM*2).times{
a=rand(@people.size)
b=rand(@people.size)
next if a==b # 本人同士は結婚できない
next unless (@people[a]-@people[b]).abs < rand(5) # 年齢が近いほど結婚しやすい
@people.delete_at( [a,b].max ) # 未婚者リストから撤去
@people.delete_at( [a,b].min )
}stat1 = count_stat @people
stat0.size.times{ |i|
s0 = stat0[i]
next if !s0 || s0==0
s1 = stat1[i] ? stat1[i] : 0
puts "%2d : %4d->%4d ( %5.2f%% )"%[ i, s0, s1, s1.to_f / s0 * 100 ]
}
団塊の世代はむしろ既婚率が高かった。
これはこれで、釈然としない結果ではあるが。