ポケカを本気で統計してみる(準備編①)
前回の記事が自分的には内容が今一つだったのに思わぬ高評価いただいてスイッチが入ってしまいました。
(褒められて伸びるおっさんなのです)
そこでちょっと本気でポケカを統計してみようと思いました。
今回はその下準備なので、結果と考察に興味があり、過程には興味はない方はスルーしてください。
やろうとしていること
やろうとしていることは、前回の記事で仮説として挙げた、
デッキ相性が平均的なデッキと極端なデッキで結果にどのようなばらつきが出るか、ということを検証しようと思っています。
具体的には、今はデッキの使用率に加え、対面ごとの勝率もデータとして出されています。
それをその勝率に基づきひたすら多くの数を試行してみて、ばらつきがどのようになるかということをシミュレーションしてみることです。
使うツール
前回までの検証は、基本的にスプレッドシート(Excel)で行っていました。
スプレッドシートはめちゃくちゃ便利なのですが、基本的には試行を1回1回行わなければならず、多くのサンプルを取って確率を見ることには向いていません。
そこで、今回は統計解析によく使われるプログラムのRというものを使おうと思っています。
Rは学生の時にちょっとだけ使ったことがあるのですが、ほとんど忘れているのでネットやChatGTPに頼ってほぼ1からのスタートです。
さて、目的にたどり着けるか。
方法
まず、任意の母集団に対して、ランダムにマッチングされるデータを作成します。
方法としては、最初に参加したプレイヤーIDをランダムに配置したベクトルを作り、それを2つの列に分割することを考えます。
具体的には、10人のプレイヤーがいた場合にその1〜10のIDをランダムに並び替えます。
3,6,7,10,1,2,4,8,9,5
こんなようなランダマイズされたデータを作り、これを
3,6,7,10,1
2,4,9,0,5
と2列にすれば、3と2がマッチング、6と4がマッチング、というようにランダムなマッチングが生成できると思いました。
Rのコードで書くとこんな感じです。
A <- sample(1, 10)
B <- matrix(A, nc=2, b=T)
これで、Bの結果を返すとこんなデータになりました。
![](https://assets.st-note.com/img/1717592505685-DjQemrQ4cS.png)
とりあえずできたように思います。
次に、これを繰り返して大量に並べていくことにより、大量のランダムマッチングのデータができると思いました。
それを行うためにネットで調べたり、ChatGTP先生に聞いたりしたら、for構文を使って繰り返し処理を行い、それをrbind関数をつかって繋げていけばできそうに思えました。
ということでこんなことをしました。
まず、最初の処理を繰り返しで行うために関数化します。
f1 <- function(){
A <- sample(1:10)
matrix(A, nc=2, b=T)
}
これを、繰り返し処理する指示を与えます。
match_TCG=NULL
for(i in 1:3){
+ random_matrix<-f1()
+ match_TCG<-rbind(match_TCG,random_matrix)
+ }
とりあえず10人、5試合のランダムマッチを3回繰り返してみました。
これを表示するとこうなりました。
![](https://assets.st-note.com/img/1717593946037-T991RYqlFq.png)
5試合×3回のランダムマッチができあがったように見えます。
これの参加人数、試行回数のパラメータを増やして、100試合×100回のデータを作れば、10,000試合分のランダムマッチができます。
この行列を作るのがスプレッドシートでは難しかったので、ここまで来ればあとはスプレッドシートでもいけそうな気がします。
しかしせっかくやり始めたのでしばらくRと格闘してみようと思います。
今日は一旦ここまで。
さて、目的に辿り着けるか。更新がなかったら死んだと思ってください。
この記事が気に入ったらサポートをしてみませんか?