運による収入
運によって収入が微妙に変わることが繰り返されるとどういう結果になるかのシミュレーション
code:lucky.js
incomes = []
iter = 20
function setup(){
createCanvas(600,600);
}
function draw(){
background('#fef')
strokeWeight(0)
income = 100 // 収入初期値
for(i=0;i<iter;i++){ // 運によって収入が上下
income *= 1.0 + (random() * 0.4 -0.2)
}
incomes.push(income)
incomes.sort((a,b) => b-a) // 逆順ソート
for(i=0;i<incomes.length;i++){
fill('blue')
//rect(50*Math.log(i),400-50*Math.log(incomesi),2,2) rect(i*1,600-incomesi,2,2) }
// 平均値を表示してみる
fill('red')
total = 0
for(i=0;i<incomes.length;i++){
}
average = total / incomes.length
rect(0,400-50*Math.log(average),400,1)
fill('black')
text('平均収入 = ' + average, 10, 400-50*Math.log(average)+30)
// 中央値
text('中央値 = ' + center, 10, 400-50*Math.log(average)+50)
}
Ruby版
code:lucky1.rb
#
# 運に応じて収入が0.8〜1.2倍になることを繰り返す
#
1000.times {
income = 100
100.times {
income *= (1.0 + (rand() * 0.4 - 0.2))
}
printf "%f\n", income
}
code:Makefile
lucky1:
ruby lucky1.rb | sort -r -n | head -200 > lucky1.dat
gnuplot lucky1.gnuplot
code:lucky1.gnuplot
set logscale x
set logscale y
plot "lucky1.dat"
結果
https://gyazo.com/6cd6cd60b2f48e1154f591372aec9493