BPシミュレーション用スクリプト

勝率はどれだけ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