誰が強いか数学的に決めたい。確率論


UNOなどのカードゲームが出来る場所を運営しようと思っています。
会員証を発行して、メンバー管理を行います。

誰が強いのか決めたいのですが・・・

優勝回数などのポイント制にしてしまうと、たくさんゲームをした方が有利になってしまいます。

また平均順位にするにしても、
例えばUNOをやる場合にある時には3人でゲームをして1位になったけど、ある時には10人でゲームをして1位になったというケースがあります。
当然3人よりも10人でゲームをして1位になる方が困難です。

それらを踏まえた上で確率が正常に収束できるように
誰が強いか決めたいのですが、どのような方法が適切でしょうか。

完全な回答はないと思うので
数式などとあわせて適切だと思う強さ(レーティング)の求め方についてご意見ください。

また数式で現せる場合には、何回ぐらいゲームすれば
確率的にその数値(レーティング)が収束するかもあわせてご教授ください。

色々な案をお聞きしたいです。

はてなポイントは、300pt設定です。


回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/09/06 14:55:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:sloto No.1

回答回数49ベストアンサー獲得回数6

ポイント75pt

すべての人間が勝つ確率は等分と仮定します。つまり、参加する人間の強さはそれぞれあらかじめ相互に不明なものとします。

ある人物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

http://www.ibaraki-kodomo.com/toukei/ci2.html

http://q.hatena.ne.jp/1213766432

id:newad0901

今のところ、slotoさんがベストアンサーです。

ただし日次でランキングを出すには少し計算式が難しすぎる気もします。

エクセルで組めるかどうか。。。、

もう少し回答を受付します。

2011/08/30 22:41:56

その他の回答3件)

id:sloto No.1

回答回数49ベストアンサー獲得回数6ここでベストアンサー

ポイント75pt

すべての人間が勝つ確率は等分と仮定します。つまり、参加する人間の強さはそれぞれあらかじめ相互に不明なものとします。

ある人物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

http://www.ibaraki-kodomo.com/toukei/ci2.html

http://q.hatena.ne.jp/1213766432

id:newad0901

今のところ、slotoさんがベストアンサーです。

ただし日次でランキングを出すには少し計算式が難しすぎる気もします。

エクセルで組めるかどうか。。。、

もう少し回答を受付します。

2011/08/30 22:41:56
id:Lhankor_Mhy No.2

回答回数816ベストアンサー獲得回数233

ポイント75pt

有名なものでは、ご存知かもしれませんがイロレーティングという方法があります。

イロレーティング - Wikipedia

これを元に設定するのはいかがでしょうか。マルチプレイヤーゲームでの勝敗をどのようにつけるかという問題が残りますが、たとえば4人なら(1勝、0.5勝、0.5敗、1敗)などのようにゼロサムになるように勝敗が分配されれば問題ないはずです。

 

非ゼロサムゲームのレーティングについて、Glicko system というものがあるらしいですね。自分にはさっぱりですが。

no title

 

また、簡単にやるならば、ネット麻雀の草分け東風荘のレート計算法がありましたので、これを参考にするというのはいかがでしょうか。

東風荘/Rの計算

id:newad0901

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 ・・・

ゲーム参加回数から平均値を取ろうかと考えていたので考え方は近いです。

ただ、これについてはこの考え方がレーティングに適しているのか自信がありません。

2011/08/30 22:42:18
id:you1031931 No.3

回答回数323ベストアンサー獲得回数3

ポイント75pt

4人集まらないと始まらないような制度にしたら平均順位の問題はクリアできます

そこで勝率で競わせるような制度にします

でもそれだけでは一回だけやって勝った人は勝率100%になってしまうので

同率の勝率が出てきた場合は対戦回数が多いほうが(勝ちの回数が多いほうが)上

というやり方はどうでしょう

id:newad0901

youさんの回答は、単純に勝ち負けのゲームならいいと思いますが

順位付けする。かつ毎回人数が違うという今回の問題からははずれています。

すいません。

2011/08/30 22:42:41
id:ita No.4

回答回数204ベストアンサー獲得回数48

ポイント75pt

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)

などとなります。人数の多い場合、一位の得点が高くなります。

これを各ゲームごとに単純に足し算していたものでプレイヤーを並び替えればいいです。

  • id:Happisee714
    UNOの場合は得点の付け方が公式ルールで決められています。
    日本ルールと国際ルールがありますが、日本ルールなら各プレイヤーの合計得点が±0になるのでそれを使えばいいと思います。

    http://ja.wikipedia.org/wiki/UNO_(%E3%82%B2%E3%83%BC%E3%83%A0)#.E7.82.B9.E6.95.B0
  • id:SALINGER
    東風荘のRを不特定数に変形したレーティングを考えてみると面白いかも。自信が無いけどこんな感じかな。
     
    R+((M-R)/(N*15)+((N+1)/2-J)*((N*15)/(N-1)))*S
     
    R : 自分のR
    M : 他の平均R
    J : 順位
    N : 人数
    S : 試合数補正
     
    考えてて思ったけど、例えば、1位を1回だけとった人よりも、1位を9回とって2位を1回とった人のほうが強いと思う。それは単純な順位の平均では強さと違うのではないかというところ。それにたくさんゲームをしたほうが少しでも有利にすることは、常連が上位に来て盛り上がるし、商売としてはそのほうがいいと思う。
  • id:newad0901
    はぴすぃ714さん
    ありがとうございます。参考にします。

    SALINGERさmm
    東風荘のRはよくできてますよね。
    頂いた計算式理解できました。これもいいですね。
    確かに、たくさん来てくれた方が上位にいる方が盛り上がるのは分かるし
    お店としては上位に特典をつけるならそうするんですが、並行して自分がどれくらい強いのか?というニーズも少なからずあるんですよ。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません