鍋あり谷あり

テーマを決めずに適当に書いています。

結婚しやすい世代

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
end

stat0 = 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 ]
}

団塊の世代はむしろ既婚率が高かった。
これはこれで、釈然としない結果ではあるが。