BPシミュレーション用スクリプト
上記の記事で使ったスクリプト。
#!/bin/bash
# p: rate of winning 0<p/10<1
# n: number of games
nlist="50 100"
ave=1000
bp_basic=36
bp_bonus=2
for n in $nlist ; do
log=log$n
data=data$n # for visualization
ls $log &>/dev/null && rm $log
ls $data &>/dev/null && rm $data
for p in 1 2 3 4 5 6 7 8 9 ; do
BP_all_sum=0 # total BP
BP_basic_sum=0 # basic BP (without any bonus)
for a in `seq 1 $ave` ; do # average over $ave "$n games"
win_streak=0
for i in `seq 1 $n` ; do
rand=$((RANDOM%10)) # 0~9
if [ $rand -lt $p ] ; then
# win
BP_all_sum=`echo $BP_all_sum+$bp_basic+$bp_bonus*$win_streak | bc` # get BP; +36~46
BP_basic_sum=$((BP_basic_sum+bp_basic)) # get BP; +36
[ $win_streak -lt 5 ] && win_streak=$((win_streak+1)) # max streak is 5
else
# lose
win_streak=0
fi
done
done
BP=`echo "scale=4;$BP_all_sum/$ave"|bc -l`
BASIC=`echo "scale=4;$BP_basic_sum/$ave"|bc -l`
bonus=`echo "scale=4;$BP-$BASIC"|bc -l`
echo "Sum of BP over $n games. p= $p, BP= $BP, BASIC= $BASIC, bonus= $bonus" >> $log
echo "$p $BP" >> $data
done
done