UNOなどのカードゲームが出来る場所を運営しようと思っています。
会員証を発行して、メンバー管理を行います。
誰が強いのか決めたいのですが・・・
優勝回数などのポイント制にしてしまうと、たくさんゲームをした方が有利になってしまいます。
また平均順位にするにしても、
例えばUNOをやる場合にある時には3人でゲームをして1位になったけど、ある時には10人でゲームをして1位になったというケースがあります。
当然3人よりも10人でゲームをして1位になる方が困難です。
それらを踏まえた上で確率が正常に収束できるように
誰が強いか決めたいのですが、どのような方法が適切でしょうか。
完全な回答はないと思うので
数式などとあわせて適切だと思う強さ(レーティング)の求め方についてご意見ください。
また数式で現せる場合には、何回ぐらいゲームすれば
確率的にその数値(レーティング)が収束するかもあわせてご教授ください。
色々な案をお聞きしたいです。
はてなポイントは、300pt設定です。
すべての人間が勝つ確率は等分と仮定します。つまり、参加する人間の強さはそれぞれあらかじめ相互に不明なものとします。
ある人物Pがn回目のゲームでb人が参加したときの順位がa以上だったとき、P_n(a/b)と書くことにします。以下、AとBで比較します。
AがA_1(1/4)、A_2(1/3)。BがB_1(1/4)だったとすると、4人中1位かつ3人中1位をとったAは4人中1位となっただけのBより強いでしょう。
なぜならBがAと等価となるのは3人参加のゲームで1位とならなければいけないので、Bと同じ状況の人間が3人いたとして、その3人がゲームをしたとして勝った人間のみがAと対等となるからです。
AがA_1(2/4)、A_2(1/3)。BがB_1(1/4)だったとすると、やはりAの方が強いです。4人のうちの勝ち組2人…これは6人のうちの勝ち組3人に入れることと等価で、さらにその3人の中で1番になるのと同じなので実質上の一番になるのと同じです。
AがA_1(1/4)、A_2(1/3)。BがB_1(2/4)、B_2(1/3)。
これだと必ず両方を勝ち抜いているAの方が強いです。
AがA_1(5/6)、A_2(2/3)。BがB_1(1/3)、B_2(5/8)。なら、Aが18人中の15人に含まれて、なおかつ15人中の10人に含まれるとのと同じなので9人中の5人に入っています。Bは24人中の8人かつ8人中の5人なので24人中の5人に入っているので、Aの方が強いです。
これは、たとえばAならA_1*A_2などとそのもののすべての値をかけることで出てきます。
しかし、この方法ではたとえばP_1(7/10)、P_2(7/10)、P_3(7/10)を3回取った人は1000人中の343人であり、3回とも平均より下の成績をとったにもかかわらずまったくゲームをしていない人と比較して強くなってしまいます。
10人中1位を5回とって6回目の勝負で10人中8位を取ったAと、10人中1位を5回とっただけのBなら6回目の順位の期待値が5.5位な分Bの方が高い順位です。
よって、実力とその人数における相対的な計算方法を導入する必要があります。
個々のゲームにおける期待値の導入です。5人ゲームでの順位の平均的な期待値は3位です。10人ゲームでの期待値は5位か6位です。b人だと(b+1)/2位となります。よって、(b+1)/2=qとして、P_n(a/b)のとき、PE_n(a/b)=a/qと定めます。
つまり、PE(1/10)=1/5.5、PE(1/3)=1/1.5です。PE(2/3)=2/1.5で、PE(7/10)=7/5.5です。
これだと平均より上なら小さい値になり、平均より下なら高い値になります。これを以て先程の例を計算してみます。
AE_1、AE_2、…などを計算して、それらをすべて掛け合わせたものをAEとします。
AがA_1(1/4)、A_2(1/3)。BがB_1(1/4)だったとすると、AE_1=1/2.5、AE_2=1/2よりAE=1/5、BE_1=1/2.5=BEよりAE<BE。
AがA_1(1/4)、A_2(1/3)。BがB_1(2/4)、B_2(1/3)だとAE_1=1/2.5、AE_2=1/2よりAE=1/5、BE_1=2/2.5、BE_2=1/2よりBE=1/2.5。よってAE<BE。
AがA_1(5/6)、A_2(2/3)。BがB_1(1/3)、B_2(5/8)ならAE=5/3.5*2/2=5/3.5、BE=1/2*5/4.5=5/9よりAE>1>BEとなり、まったく勝負していない人よりもAが弱くBが強くなります。
平均以下を2回取ったAが平均以下の実力しかないことは自明で、Bもイメージすればなんとなくですがつかめるでしょう。
よって次の方法が理想です。
プレイヤーA,B,C,D,E,…,X,Y,Zがいて、順位を決めたいと思います。
n回ゲームをプレイしたAがk回目のゲームでb人中a人となった時、AE_k=2a/(b+1)と定めます。
AE=AE_1*AE_2*…*AE_nとして、各プレイヤーごとにBE、CE、…、ZEを計算します。
これらを小さい順に並べます。数字が小さい人がもっとも強いプレイヤーです。
この方法だと、どれだけプレイしても平均以下の成績をとり続けたら順位は落ちていきます。
逆に3人中1位を2回取るのは10人中1位を一度取るよりも簡単となりますが、あくまでも平均的な誤差を参照しているので、3人中1位を2回取るのは7人中1位を取るのと同じ難易度で、9人中1位を1回取るのよりも、8人中1位を1回取るよりも簡単となってしまいます。
正規分布などにあてはめられたら楽なのですが、それをどのようにして導出するかは難しいです。
なお、集める数ですが、標本の大きさによって変わります。
一般には数十集めれば十分ですが、詳しくは区間推定、などで調べてください。
http://www.ceser.hyogo-u.ac.jp/naritas/spss/sample_size/sample_size.htm
すべての人間が勝つ確率は等分と仮定します。つまり、参加する人間の強さはそれぞれあらかじめ相互に不明なものとします。
ある人物Pがn回目のゲームでb人が参加したときの順位がa以上だったとき、P_n(a/b)と書くことにします。以下、AとBで比較します。
AがA_1(1/4)、A_2(1/3)。BがB_1(1/4)だったとすると、4人中1位かつ3人中1位をとったAは4人中1位となっただけのBより強いでしょう。
なぜならBがAと等価となるのは3人参加のゲームで1位とならなければいけないので、Bと同じ状況の人間が3人いたとして、その3人がゲームをしたとして勝った人間のみがAと対等となるからです。
AがA_1(2/4)、A_2(1/3)。BがB_1(1/4)だったとすると、やはりAの方が強いです。4人のうちの勝ち組2人…これは6人のうちの勝ち組3人に入れることと等価で、さらにその3人の中で1番になるのと同じなので実質上の一番になるのと同じです。
AがA_1(1/4)、A_2(1/3)。BがB_1(2/4)、B_2(1/3)。
これだと必ず両方を勝ち抜いているAの方が強いです。
AがA_1(5/6)、A_2(2/3)。BがB_1(1/3)、B_2(5/8)。なら、Aが18人中の15人に含まれて、なおかつ15人中の10人に含まれるとのと同じなので9人中の5人に入っています。Bは24人中の8人かつ8人中の5人なので24人中の5人に入っているので、Aの方が強いです。
これは、たとえばAならA_1*A_2などとそのもののすべての値をかけることで出てきます。
しかし、この方法ではたとえばP_1(7/10)、P_2(7/10)、P_3(7/10)を3回取った人は1000人中の343人であり、3回とも平均より下の成績をとったにもかかわらずまったくゲームをしていない人と比較して強くなってしまいます。
10人中1位を5回とって6回目の勝負で10人中8位を取ったAと、10人中1位を5回とっただけのBなら6回目の順位の期待値が5.5位な分Bの方が高い順位です。
よって、実力とその人数における相対的な計算方法を導入する必要があります。
個々のゲームにおける期待値の導入です。5人ゲームでの順位の平均的な期待値は3位です。10人ゲームでの期待値は5位か6位です。b人だと(b+1)/2位となります。よって、(b+1)/2=qとして、P_n(a/b)のとき、PE_n(a/b)=a/qと定めます。
つまり、PE(1/10)=1/5.5、PE(1/3)=1/1.5です。PE(2/3)=2/1.5で、PE(7/10)=7/5.5です。
これだと平均より上なら小さい値になり、平均より下なら高い値になります。これを以て先程の例を計算してみます。
AE_1、AE_2、…などを計算して、それらをすべて掛け合わせたものをAEとします。
AがA_1(1/4)、A_2(1/3)。BがB_1(1/4)だったとすると、AE_1=1/2.5、AE_2=1/2よりAE=1/5、BE_1=1/2.5=BEよりAE<BE。
AがA_1(1/4)、A_2(1/3)。BがB_1(2/4)、B_2(1/3)だとAE_1=1/2.5、AE_2=1/2よりAE=1/5、BE_1=2/2.5、BE_2=1/2よりBE=1/2.5。よってAE<BE。
AがA_1(5/6)、A_2(2/3)。BがB_1(1/3)、B_2(5/8)ならAE=5/3.5*2/2=5/3.5、BE=1/2*5/4.5=5/9よりAE>1>BEとなり、まったく勝負していない人よりもAが弱くBが強くなります。
平均以下を2回取ったAが平均以下の実力しかないことは自明で、Bもイメージすればなんとなくですがつかめるでしょう。
よって次の方法が理想です。
プレイヤーA,B,C,D,E,…,X,Y,Zがいて、順位を決めたいと思います。
n回ゲームをプレイしたAがk回目のゲームでb人中a人となった時、AE_k=2a/(b+1)と定めます。
AE=AE_1*AE_2*…*AE_nとして、各プレイヤーごとにBE、CE、…、ZEを計算します。
これらを小さい順に並べます。数字が小さい人がもっとも強いプレイヤーです。
この方法だと、どれだけプレイしても平均以下の成績をとり続けたら順位は落ちていきます。
逆に3人中1位を2回取るのは10人中1位を一度取るよりも簡単となりますが、あくまでも平均的な誤差を参照しているので、3人中1位を2回取るのは7人中1位を取るのと同じ難易度で、9人中1位を1回取るのよりも、8人中1位を1回取るよりも簡単となってしまいます。
正規分布などにあてはめられたら楽なのですが、それをどのようにして導出するかは難しいです。
なお、集める数ですが、標本の大きさによって変わります。
一般には数十集めれば十分ですが、詳しくは区間推定、などで調べてください。
http://www.ceser.hyogo-u.ac.jp/naritas/spss/sample_size/sample_size.htm
今のところ、slotoさんがベストアンサーです。
ただし日次でランキングを出すには少し計算式が難しすぎる気もします。
エクセルで組めるかどうか。。。、
もう少し回答を受付します。
有名なものでは、ご存知かもしれませんがイロレーティングという方法があります。
これを元に設定するのはいかがでしょうか。マルチプレイヤーゲームでの勝敗をどのようにつけるかという問題が残りますが、たとえば4人なら(1勝、0.5勝、0.5敗、1敗)などのようにゼロサムになるように勝敗が分配されれば問題ないはずです。
非ゼロサムゲームのレーティングについて、Glicko system というものがあるらしいですね。自分にはさっぱりですが。
また、簡単にやるならば、ネット麻雀の草分け東風荘のレート計算法がありましたので、これを参考にするというのはいかがでしょうか。
Lhan・・・さんのイロレーティングは知りませんでしたが
当初、3人でも10人でも100点化して3人だと1位100 2位50 3位0
10人だと 1位100 2位89 3位78・・・ として
a人だと 1位100 2位100-100/a ・・・
ゲーム参加回数から平均値を取ろうかと考えていたので考え方は近いです。
ただ、これについてはこの考え方がレーティングに適しているのか自信がありません。
4人集まらないと始まらないような制度にしたら平均順位の問題はクリアできます
そこで勝率で競わせるような制度にします
でもそれだけでは一回だけやって勝った人は勝率100%になってしまうので
同率の勝率が出てきた場合は対戦回数が多いほうが(勝ちの回数が多いほうが)上
というやり方はどうでしょう
youさんの回答は、単純に勝ち負けのゲームならいいと思いますが
順位付けする。かつ毎回人数が違うという今回の問題からははずれています。
すいません。
slotoさんの回答と考え方は同じですが簡略化してみます。
基本的に偶然その順位で勝つ確率÷負ける確率、を積算していきますが、
対数を取れば足し算になる、Log(AB)=LogA+LogBということを使って、毎回のスコアを足し算していけばいいようにします。
N人でゲームしてR位だった場合のスコアは
-Log(まぐれでそれ以上の順位となる確率)+Log(まぐれでそれ以下となる確率)
とします。具体的には
-Log(R/N) + Log( (N-R+1)/N) = -(Log(R)-Log(N))+(Log(N-R+1)-Log(N))
= -Log(R)+Log(N-R+1)
がスコアです。
参加2人の場合のスコア、
一位 Log(2)
二位 -Log(2)
参加3人の場合
一位 Log(3)
二位 0
三位 -Log(3)
4人
一位 Log(4)
二位 Log(3)-Log(2)
三位 Log(2)-Log(3)
四位 -Log(4)
などとなります。人数の多い場合、一位の得点が高くなります。
これを各ゲームごとに単純に足し算していたものでプレイヤーを並び替えればいいです。
今のところ、slotoさんがベストアンサーです。
ただし日次でランキングを出すには少し計算式が難しすぎる気もします。
エクセルで組めるかどうか。。。、
もう少し回答を受付します。