外積によるじゃんけんの勝敗決定

日記とブログの違いが分からんので念のため一年前に書いたものをこっちにコピペした。TeX?なにそれおいしいの状態の時に書いたものなので暇なときに書き直すかも。

じゃんけんには一般にグーチョキパーの3通りの手が存在し、どれを選らんでも勝率が変わらないようになっている。ところで、じゃんけんの手をグーチョキパー+αして4手にした際、どのようにルールを設定すれば不都合が起きないかといった問題が灘中か高で出題されてた気がする。いや不確かなので信用はしないで頂きたいが、そういった問題が何処かに在ったことは確かである。ここで、手出せる手の種類がn種類である時、どのように勝敗決定をするかと言うのがこのブログの内容である。タイトルに記載の通り、ベクトルの外積を使うことを提案するのだが、先ずはそこに至るまでの経緯から書くとする。取り敢えずじゃんけんに必要な条件を列挙する。

1.どの手を出しても勝率が一定である(人が出す手を偏らせない)
2.仮にaと言う手がbと言う手に勝つとき、bはaに対して同様に負けなければならない

恐らくじゃんけんに必要な最低条件はこれであるが、今回じゃんけんの弱点である、大人数で行う時にあいこが続き勝敗がなかなか決められない、又は決められたとしても、n人で行ない1位~n位まで決定する必要が在る場合何度もじゃんけんを行わなければならないことを、改善もしようと思う。

3.あいこが続かない
4.順位付けが簡単

これらの1~4の条件を満たす勝敗決定を考える。
用いる手の数をn手、t[1],t[2],...,t[n]があるとし、行う人数をp人とする。
例えば一般のじゃんけんでは
n=3,t[1]='グー',t[2]='チョキ',t[3]='パー',行う人数は任意なのでpである。
因みに人間の手の指は欠陥が無い限り10本であるため、指を曲げる、曲げないのみ区別すると1<n<1025の自然数である。(足の指使うとか、指半分曲げるとかも許容するともっと増えるが)

以下、考えた方法を記載する。
先ず1を満たすために単位円を考え、単位円上でT[k]に対応する座標を
Tk(cos(2π(k-1)/n),sin(2π(k-1)/n))
と置く。(0<k<n+1)
これで一般性が保たれる。
次に2を満たすためにベクトルoT_kを考え、t_k=oT_kと定義する。あるベクトルa,bの勝敗を決めるときにa×bの外積を考え、a×b>0のときaがbに対して|a×b|点勝つとすると、b×a<0且つ|a×b|=|b×a|より、b×aはbがaに対して|b×a|点負けると同義になりこれは矛盾を生じない。グーとチョキについて例を示せば、t[1]='グー',t[2]='チョキ',t[3]='パー'
t_1(1,0) , t_2(-1/2,√3/2)
t_1×t_2=√3/2よりこれはグーがチョキに√3/2点勝つことを意味し、
t_2×t_1=-√3/2よりこれはチョキがグーに√3/2点負けることを意味する。
同様にグーとパー、チョキとパーも行うと一般性が確かめられる。
グーとグー等の同じ手同士ではt_1×t_1=0となり、これはあいこを表す。
この外積の方法を取ると、3,4の条件も同時に満たす事が出来、ある2つのベクトルt_{n1},t_{n2}外積の絶対値が|sin2πl/n|(l=t_{n2}-t_{n1})であるため、p人のうちある1人の点数を、それ以外の人の手との外積を求めた合計とすると、nが増えれば増える程あいこになりにくくなり、また点数制の導入により順位付けが容易になった。n=3でも良いので、普通のじゃんけんにこの点数制を導入しても良い。当たり前だが、全員の点数を合計すると0となる。ところで1つ問題があるとすれば、sin2πl/nの計算をしなければいけない事であるが、こんなことは何度もあいこになっていつまでも勝敗が決定しないことを考えると些細な事である。え?二人組ないし三人組を逐一作ってやってゆけばあいこは少なく順位付けは容易?確蟹。まあでもこの外積の方法を面白いと思うので書くのですが。