3章 金を追って

  • 富の分布を考える
  • 今回考えるモデル
    • 個体数 一定
    • 個体は富をもつ
    • 富の総量 一定
    • 財産はゼロまたは正の量
  • 取引
    • 二者間に対して取引が行われる
    • 取引によって富の移動がする
    • 同時に複数の取引は行われない
    • 二者の選び方はランダムということにしておく
    • あとは 量、方向 を決める
  • モデル
    1. フリーマーケット
      • 富の移動量は貧しい方の財産を超えない
      • 取引の方向はランダム
    2. 結婚離婚モデル
      • 二者の富の総量がランダムに二者に分配される
    3. 盗みサギ
      • 勝ち負けはランダムに決める
      • 移動量は与える側のランダムな割合
N<-1000 #個体数
M<-100 #富の総量
T<-1000 #取引回数
A<-runif(N)
A<-A*M/sum(A) #初期の富の分配
#A

flea.market<-function(){
	range<-min(A[select])
	trade<-runif(1,min=-range,max=range)
	A[select]<-A[select]+c(trade,-trade)
	return(A)
	}
marriage<-function(){
	total<-sum(A[select])
	property<-runif(1,min=0,max=total)
	A[select]<-c(property,total-property)
	return(A)
	}
thief<-function(){
	#select[1]がselect[2]に富を渡すとする
	ratio<-runif(1)
	trade<-A[select[1]]*ratio
	A[select]<-A[select]+c(-trade,+trade)
	return(A)
	}

for(t in 1:T){
select<-sample(1:N,2)
A<-flea.market()
#A<-marriage()
#A<-thief()
}

hist(A,breaks=N,xlab="property")
#plot(sort(A),xlab="individuals",ylab="property")
N<-1000 #個体数
M<-100 #富の総量
T<-1000 #取引回数
A<-runif(N)
A<-A*M/sum(A) #初期の富の分配
#A
flow<-c()

flea.market<-function(){
	range<-min(A[select])
	trade<-runif(1,min=-range,max=range)
	A[select]<-A[select]+c(trade,-trade)
	return(A)
	}
marriage<-function(){
	total<-sum(A[select])
	property<-runif(1,min=0,max=total)
	A[select]<-c(property,total-property)
	return(A)
	}
thief<-function(){
	#select[1]がselect[2]に富を渡すとする
	ratio<-runif(1)
	trade<-A[select[1]]*ratio
	A[select]<-A[select]+c(-trade,+trade)
	return(A)
	}


for(t in 1:T){
select<-sample(1:N,2)

#B<-flea.market()
B<-marriage()
#B<-thief()

flow<-c(flow,max(A-B))
A<-B
}

#hist(A,breaks=N,xlab="property")
#plot(sort(A),xlab="individuals",ylab="property")
hist(flow,breaks=length(flow),xlab="money flow")
#plot(sort(flow),ylab="flow")