金のやりとり問題(2)
相手が自分より金持ちな場合は1円渡し、逆の場合は1.2円渡すことにすると超安定する
https://gyazo.com/72e7e98235b142d36ca8fecc9e0868d9
code:random.js
let n = 199 // 人数 (結果に特に影響しない)
let accell = 40 // シミュレーションの加速
let person = []
function setup(){
createCanvas(n*2,600)
for(var i=0;i<n;i++){
// 4人だけ色をつける
let color = '#444'
if(i == 0) color = '#f39800' // オレンジ
if(i == 1) color = '#ff0' // 黄色
if(i == 2) color = '#00f' // 青
if(i == 3) color = '#fff' // 白
personi = { val: 100, color: color} // みんなの所持金, 表示色 }
strokeWeight(0)
}
function draw(){
fill('#eee')
rect(0,0,n*2,600)
for(var j=0;j<accell;j++){ // 高速化のためaccell回実行
let sel1 = int(random(n)) // 貰う人
let sel2 = int(random(n)) // 渡す人
let v = 1 // やりとりする金額
v = 1
}
else {
v = 1.2
}
personsel1.val += v // 所持金をvだけ増やす personsel2.val -= v // 所持金をvだけ減らす }
person.sort((a,b) => b.val - a.val) // 降順ソート
for(var i=0;i<n;i++){
rect(i*2,400-personi.val,2,personi.val) }
fill('black')
rect(0,300,n*2,1) // 100のところに線を引く
}