天鳳の安定段計算ツール シンプル版 鳳凰用 特上用 上卓・三人打ち用はこちらから
背景指定  

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

天鳳の安定段について

天鳳雑スレを見ていたら以下のような書き込みを発見。
で、作ってみた。天鳳の安定段計算ツール
昇段or降段までの予想試合数表示機能付き。

83 焼き鳥名無しさん sage New! 2008/09/11(木) 02:33:37 ID:???
>>47
東風戦の場合、段位がひとつ上がるごとに4位でのマイナスptが10増える
ので、1/10段上がるごとにマイナスptが1増えると考える事ができる
つまり、8段なら-100、8.1段なら-101、~9段なら-110という感じ
それを踏まえて、安定段位の計算方法は次のとうり
(例)特東、8.5段の場合
1位率×50pt ・・・A
2位率×20pt ・・・B
3位率×0pt ・・・C
4位率×-105pt ・・・D
A~Dを全部足すと、特東1戦あたりの期待ptがでる
その期待ptを0.1段ごとに各プレイヤーの順位率で計算してギリギリプラス
になる所(0.1段上がるとマイナスになる)が安定段位になってる

102 焼き鳥名無しさん sage New! 2008/09/11(木) 02:51:22 ID:???
>>83
(1位回数*50+2位回数*20)/(4位回数*n) 
でnが特定の段の4位マイナスptでどのへんとつりあうかってことだよね?

 4  5  6  7  8  9
n=60 70 80 90 100 110

安定段の少し分かりやすい説明は、少し下にある【安定段理解のためのメモ】にて。

難しいことは置いといてと、安定段でこんなことが分かる。
今までの鳳凰または特上・上卓のそれぞれにおける東風もしくは東南での成績を今後も維持できる、つまりこれからも今までの打ち方を変えない事が条件&理論上の話。

1.打ち続ければ安定段の整数部+1段までは到達できる。
 例えば、6.2601段(俺)なら七段までは到達できる。
 安定段が丁度自然数になる場合は、その段位で安定して上下せず。

2.安定段の整数部の段位は維持できる、それ以上なら降段する。
 例えば、6.2601段なら六段は維持できるが、七段は維持できない。

3.昇段もしくは降段するまでの試合数の目安。
 試合数自体は順位率から計算する。
 例えば、6.96段なら七段から降段しても割とすぐに戻れると考えられる。
 6.26段なら果てしなくかかる。2000試合とか(;´Д`)
 確変中に七段に再昇段した時は降段後1230試合だったから、まあ大まかな目安にはなるかと。

4.4位の回数*(安定段*10+20)=1位の回数*1位のpt+2位の回数*2位のpt
 これが成り立つ状態。
 安定段=((1位の回数*1位のpt+2位の回数*2位のpt)/4位の回数-20)/10

5.打ち方を変えて順位率に影響がある場合は、打ち方を変えた時点からの成績で計算する。

6.自分の打ち方が変わらなくても、同卓者というか属している場(鳳凰卓 etc)の打ち方が変わると、安定段も変わってくる可能性が高い。
 例えば、属している場における参加者が使用する戦略の変化により、今までの自分の打ち方が通用しなくなると、自分の打ち方が変化しなくても安定段は下がるであろう。


【安定段理解のためのメモ】

任意の成績で、ラスのマイナスptが何ptでつりあうのか、つまり全体でptの変動が無い状態になるのかという事がポイントとなる。

四麻の特東の場合

1位率×50pt ・・・A
2位率×20pt ・・・B
3位率×0pt ・・・C
4位率×-n ・・・D

A+B+D=0となるnを探す必要がある。

4位率×n=1位率×50pt+2位率×20pt
n=(1位率×50pt+2位率×20pt)/4位率

※○位率は○位の回数と置き換えも可能。

東南の場合は、左辺も右辺も1.5倍になる、つまり1.5倍を相殺できるので東風と同じ計算になる(詳細は後述)。

現状では、このnはpt表示である。
そこで段位表示に変換する必要がある。

天鳳の制度では、安定4段でnが60となる。
安定5段で70、安定6段で80・・・となる。
つまり、段位ごとのマイナスptと同じ。
安定段とnを対応させるには、20引いて10で割れば良い。

(例)安定6段の場合
(80-20)/10=6

安定段=(n-20)/10=((1位率×50pt+2位率×20pt)/4位率-20)/10

※東南の場合、東南ptで計算すると、段位変換の際にはnを1.5で割って20引いて10で割れば良いので、先に述べたように最初から1.5で割る=東風と同じ一位・二位pt値の利用で良い。
つまり、東南と東風は同じ計算式でOK。

東南のn=(1位率×(50pt×1.5)+2位率×(20pt×1.5))/4位率=1.5×(1位率×50pt+2位率×20pt)/4位率=1.5×東風の式=1.5×東風のn
これを1.5で割るのだから、最初から東風の式の利用で問題なし。

東南と東風で異なるのは、昇段もしくは降段までの理論上の試合数。


【安定段の有用性について】

麻雀一番街 内の 天鳳段位等の安定性に関する研究 前編 ページの下の方の

第5 天鳳における段位・Rateのばらつき方 で検証されている。



【変更履歴】

09/14追記
天鳳の安定段計算ツールによる予想試合数を、単純に1000試合あたりで計算していたのを、三位率まで入力して1000/順位率の総和で計算するように変更。順位率の総和が必ずしも1にならない場合があるので補正。

試合数でも計算できるように変更というか、ついでにそうなったw
試合数を入れる方がより正確に結果が出る。
順位率は小数点以下第三位までの表示なので、丸められた分の誤差がほんの少し出る。

09/16追記
天鳳の安定段計算ツールが東風・東南兼用にできることに今更ながら気づいたので修正。
昇段・降段残り試合数は、特東のデータを入力したならば東風戦の残り試合数、東南のデータ入力なら東南戦の残り試合数を参照のこと。
東南は東風戦の残り試合数を1.5で割ってるだけだが。

10/17追記
安定段が丁度整数の場合に変動無しと表示されない場合があるのを修正。

09/01/28追記
鳳凰卓に対応

09/02/10追記
四麻上卓用独立、三麻用新規作成

10/04/19追記
サンマ・四麻の鳳凰卓用独立。
0pt時に降段までの試合数が0になっていたのを修正。

10/05/13追記
シンプル版作成。
詳細はこちら
スポンサーサイト

特上卓用 安定段計算ツール

四人打ち用です。
特上での安定段と、現在の段位が安定段以上なら降段、安定段以下なら昇段までの試合数が表示されます。

鳳凰・上卓・三麻用はこちらから

利用の際はJavaScriptを有効にして下さい。
安定段についての説明はこちら。

特東、特東南のいずれかの順位率もしくは試合数を入力して下さい。
入力する欄は順位率と試合数で兼用ですが、混合せずに順位率と試合数のどちらかで統一して入力して下さい。
試合数を入れる方がより正確に結果が出ます。

入力例
0.256の場合は256
0.260の場合は260

「計算」ボタンを押した後で、右側の「クリップボードへコピー」ボタンを押すと、計算結果がコピーされます。テキスト等に貼り付け可能になります。

数値は半角数字で入力して下さい。
段位は4段以上を入力して下さい。
一位率   
二位率   
三位率   
四位率   

現在の段位  4以上の数値を入れてください
現在のpt  

      
 

天鳳の洗牌と牌山積みと配牌

ここで記載している内容は2009年7月22日以前の方法です
※現在は乱数発生方法がMersenne Twisterに変わっていますが、ここでの説明のメインである並び替え方法、つまり項目2.以降は基本的に以前と同じはずです。

新しい乱数発生方法はつのブログ(牌山生成の公開方法)へ
牌操作疑惑テンプレで、一連の流れが大雑把に分かる。
天鳳公式ページの「ゲームへの疑惑・牌操作」項目も。


課金者優遇やら牌操作という話が掲示板などで飛び交う天鳳であるが、実際にはどうなっているのであろうか?

答えを先に言うと、一番最初に牌をかき混ぜて並べている。
ツモる度に残りの牌からランダムに選んでいるわけではない。

さて、天鳳の運営者である「つの」はmixiの天鳳コミュニティーでこう書いている。

山の生成ですが、次のコード以上の仕組みはありません。

unsigned long randseed[8]; // <INIT />のshuffleから生成
init_by_array(randseed,8);
for(i=0;i<136;++i) yama[i]=i;
for(i=0;i<136-1;++i) swap(yama[i],yama[i + (genrand_int32()%(136-i))]); // サンマは108
※yama[0,1,2,3]が親の最初の配牌4枚、yama[134]が1つ目の嶺上牌


09/02/24追記:

mixiの天鳳、不具合報告トピックに以下の様な事が書かれていた。

712 2009年02月08日 23:42

質問が具体的でなくて申し訳ありません。
yama[0,1,2,3]が親の配牌と書かれていますが、yama[135,134,133,132]が親の配牌になっているように思えたので確認をお願いしたいと思った次第です。

713 2009年02月09日 03:24

つの
あれ、そうなっていました。
山は後ろから消費しています。

天鳳運営に確認したところ、次の事が判明したので適正に修正。

1.1つ目の嶺上牌はyama[0]、嶺上牌はyama[0]~yama[3]
2.ドラ表示牌は4麻=yama[4]、3麻=yama[8]。

基本的に従来と左右逆になった。
本質的な事は変わらず。

09/02/24追記ここまで

ということで、これを元に推測してみる。

1.まず最初に乱数用の処理

これによって乱数発生時の偏りを無くする。
つまり周期的に同じ配牌やツモになるのを避ける。
※現在の方法では、ここが変わっている。


2.136枚の牌を横一列に並べる

たぶん内部的にはこんな感じ。
一萬一萬一萬一萬二萬二萬二萬二萬三萬三萬三萬三萬・・・發發發發中中中中
そして左端から位置情報を0,1,2,3,4,5・・・133,134,135と振る。
0なら一萬、5なら二萬、133なら中という感じ。
何故1でなく0からなのかは気にしないのが吉


3.洗牌

牌をかき混ぜる代わりに牌をバラバラに入れ替える。

調べたらFisher-Yatesという方法を使っているようだ。
このサイトで、その方法を視覚的に見ることができる。

まず最初に、左端の一萬(位置は0)を入れ替える。この際に0~135までの数字をランダムに選び、その位置の牌と入れ替える。
49ならこう
四筒一萬一萬一萬・・・四筒一萬四筒四筒・・・中中中中

次に左端から二番目の一萬(位置は1)を入れ替える。この際に1~135までの数字をランダムに選び、その位置の牌と入れ替える。
34ならこう
四筒九萬一萬一萬・・・九萬九萬一萬九萬・・・中中中中

次に左端から三番目の一萬(位置は2)を入れ替える。この際に2~135までの数字をランダムに選び、その位置の牌と入れ替える。
135ならこう
四筒九萬中一萬二萬二萬二萬二萬・・・中中中一萬

こうやって135牌目(位置は134)まで入れ替えていく。特徴としては、対象となる牌の左側の牌とは入れ替えない。上記の例で言えば、位置2の一萬は位置0の四筒と位置1の九萬とは入れ替わらない。


4.配牌

全部入れ替えるとこんな感じ。
四筒九萬中七索五筒二索三筒七萬・・・三索三萬南七筒九筒五筒赤五萬六筒
そして、親→子の順に右端から4枚づつ配っていく。


5.牌をツモる

配牌終了後、残った牌の右端から順次ツモる。この部分は想像だが、多分間違いないだろう。
鳴きでツモ順が変われば、リアルと同じようにその後のツモ牌は変わる。


6.王牌部分

左端から14枚が王牌となる。

位置情報が偶数が上山、奇数が下山になるので、上の例を用いれば最初の嶺上牌は四筒、その下の牌が九萬、ドラ表示牌が五筒、裏ドラ表示牌が二索となる。

視覚的にはこんな感じ
裏裏五筒裏裏裏裏

開くとこう
四筒中五筒三筒西八索四萬

このように、リアル麻雀同様に牌の並びは決まっているため、必要牌が喰い流された時は思いっきり悔しがってok
追いかけリーチ相手の当たり牌を一発で持ってくるのもついてないだけ。

つのが書いた通りなら、おかしなことは何も無し
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。