はじめに

\(n\)人に対して\(mn\)枚のコインをランダムに分け与えたとき,所持しているコインの枚数の分布は平均\(m\)のポアソン分布で近似することができる.『Rで楽しむ統計』(奥村晴彦,\(2016\))によると,その後人々の間でコインをランダムにやりとりさせるとコインの所持枚数の分布は指数分布に近づいてゆく. このレポートでは,ランダムにコインを分け与えるシミュレーションとそれをランダムに交換させるシミュレーションを行い,分布がどのように変化していくかを確認する.

コインの分配

まず初めに,\(2000\)人にランダムに\(10000\)枚のコインを分け与える.

n <- 2000
cn <- 10000

coin <- numeric(n)
vr <- floor(runif(cn)*n)+1
for(i in 1:cn){
  r0 <- vr[i]
  coin[r0] <- coin[r0]+1
}

このときのコインの所持枚数の分布のヒストグラムを描くと以下のようになる.

hist(coin,xlim=c(0,20),ylim=c(0,0.3),main="",breaks=seq(-0.5,19.5,by=1),freq=F)
par(new=T)
x <- 0:20
plot(x,dpois(x,5),xlim=c(0,20),ylim=c(0,0.3),ann=F,type="l")

これは平均が\(5\)なので,パラメータ\(\lambda=5\)のポアソン分布となる. 上図に描かれている曲線は\(\lambda=5\)のポアソン分布の確率関数\(f(x)\)を直線で結んだもので, \[ f(x)=\frac{5^x}{x!}e^{-5} \] である. 上図より,コインの所持枚数の分布はこのポアソン分布で近似できていると言える.

コインのやりとり

\(2000\)人の中からランダムに選ばれた\(2\)人がじゃんけんをする. じゃんけんで負けた人が勝った人に持っているコインを\(1\)枚渡す. このとき,負けた人が\(1\)枚もコインを持っていなければコインのやりとりは行われない. これを\(10^5\)回繰り返す.

N <- 10^5

そのときのヒストグラムが変化する様子を動画にする.

vr1 <- floor(runif(N-1)*n)+1
vr2 <- floor(runif(N-1)*n)+1

for(i in 1:(N-1)){
  r1 <- vr1[i]
  r2 <- vr2[i]
  if(r1!=r2 && coin[r2]>0){
    coin[r1] <- coin[r1]+1
    coin[r2] <- coin[r2]-1
    coin[c(-r1,-r2)] <- coin[c(-r1,-r2)]
  }
  marg <- max(abs(coin))
  s <- seq(0,marg+1,by=1)
  if(i%%10^3==0){
    hist(coin,xlim=c(0,30),ylim=c(0,0.3),breaks=s,freq=F)
    curve(dexp(x,1/5),xlim=c(0,30),ylim=c(0,0.3),add=T)
  }
}