« 第2東風荘アカウント数 | トップページ | TurboC++ »

2006/08/25

まだまだ鳴き対策作成中

かなり作業ペース落ちてるけど、
鳴き対策で使うサブルーチンはほぼできた。
明日以降、期待値算出のメソッドに組み込む作業を実施する予定。

|

« 第2東風荘アカウント数 | トップページ | TurboC++ »

コメント

これって、配牌ランダムですか?
通常対局で全体的に聴牌が速い感じがしたので
オープン対局でやったところ実際の麻雀に比べ
4人とも配牌がよすぎる気がするのですが・・・

投稿: チキン | 2006/09/03 15:59

コメントありがとうございます。

配牌とツモは完全にランダムです。

C++というプログラム言語の標準テンプレートライブラリに「ランダムシャッフル」という機能があるんですが単純にそれを使ってかき混ぜてるだけです。
意識してテンパイしやすい配牌になるようなプログラムにはしていません。

もともとこのゲームのCOM雀士はボウテン即リー気味なんで、テンパイ速度は相当に早いです。
3人ががむしゃらに和了を目指すとこのくらいのスピードになるってことですね。

それと、実際の麻雀の方が配牌は片寄るとは思います。手積みにしろ自動卓にしろ。きれいに牌が混ざらないですからね。そういう意味では本物の麻雀と違うとはいえるかもしれません。

該当するプログラムをお見せしますが、以下のような単純なものです。
このプログラムで牌をかき混ぜて、後は先頭から順番に牌を取っていって4人分の配牌を決めてるだけです。

/*
* 洗牌
*/
void TMJGame::shuffle(void)
{
TPai p[34] = {
1, 2, 3, 4, 5, 6, 7, 8, 9,
11,12,13,14,15,16,17,18,19,
21,22,23,24,25,26,27,28,29,
31,33,35,37,41,43,45
};

tumoyama.resize(136);
for (int i = 0; i < 136; i++ ){
tumoyama[i] = p[i/4];
}
tumoyamaIndex = 0;
random_shuffle(tumoyama.begin(), tumoyama.end());
}

投稿: kmo2 | 2006/09/03 22:23

ごぶさたしております。

半年前から遊ばさせていただいて、
ようやく100試合近くになりました。
成績は、1着から順に35,25,24,14回でした。
これは別に自慢という訳ではなくて、私は東風荘でRが1800にも満たない腕ですので、たまたまの可能性が
かなり大です。

が、打っていた感想を素直に言いますと、やりやすいなあ、という印象です。

というのは、確かにみなさんおっしゃるようにcomの手はかなり早いのですが、いかんせん安手が多いのと、待ちが悪い事が多いので、こちらが勝負できる手になった時、よく通るし、競り勝つケースが多い気がしました。

コツになるかどうかは分かりませんが、
com相手の早リーに惑わされずに、良形テンパイを極力目指し、追っかけリーチを狙うと打ち取りやすい気がします。

あとノミ手で流しやすいのでリー棒をせしめると、
手が厳しくてもラスは引きにくい、という感じがしています。特にオーラスは無意味なあがりやリーチが多い印象です。

kmo2さんがなかなか勝ち越せない、との事ですが、
単に雀風がたまたま相性が悪いのかな、という気がしないでもないです・・・。

セガMJ3のプロリーグで打った時は、
相手の手が若干遅めですが、待ちがいい(手が高い)ので、つらい印象がありました。

多少テンパイまでのスピードを遅くしても、
良形テンパイを重視した打ち方にしたらどうだろう?
と思いました。

鳴き判断というとても大変な作業をされていますが、
それが終わった後、ちょっと検討してみては、と思います。

では。

投稿: 篠崎のまっく | 2006/09/05 00:47

指摘いただいたものは、以下の3つで解決を目指したいと思っています。

- 鳴きの攻防の修正
- オーラス間際の状況判断
- 向聴数の下がらない手変わりを意識した打牌


ただコメントの個々の部分については同意する部分もあれば、ソレは違うと言いたい部分もあり、どう返事していいものやら。。。纏ってないですし説得力も無いですが考えを書いておきます。

>kmo2さんがなかなか勝ち越せない、との事ですが、
単に雀風がたまたま相性が悪いのかな、という気がしないでもないです・・・。

私の打ち方とCOMの相性が悪いってのは十分考えられます。自分で打って強さを測定するってのは客観性に欠けるとも思います。しかしだからといって、私がたまたまCOMに相性が悪いだけで、このCOMの打ち方自体が弱いかというとソレはどうかなと思います。

ネット麻雀の自動打ちアプリでも作ってみるのが客観的な実力が示せていいのかも知れませんが、嫌がる人も多いでしょうしノリ気がしません。

>いかんせん安手が多いのと、待ちが悪い事が多いので、こちらが勝負できる手
>になった時、よく通るし、競り勝つケースが多い気がしました。

相手に勝負できる手にさせないための,早上がりですし、リーチ和了に限定すればCOMの平均和了点数は特別低くありません。


>com相手の早リーに惑わされずに、良形テンパイを極力目指し、
>追っかけリーチを狙うと打ち取りやすい気がします。

このゲームは平均的な雀士の打ち方よりも愚形リーチ率が高いので、押し引き判断の基準を通常よりも攻撃側にずらした方がいい成績が取れるというのは正しいでしょう。ですが、その差は結構小さく、せいぜい数%程度と思ってます。これは数値化できそうなんで気が向いたらやってみます。

私の経験上、平場に関しては、良形聴牌を目指すよりも、待ちが悪かろうが何だろうが聴牌したら全部リーチがほぼ正解だろうとは思ってます。ただ、今のアルゴリズムのままでいいとも思っていません。修正したいとは思ってますが、計算量が莫大になるので相当に難しいでしょう。難しい割りに、実際に有効になるケースが少ないので、作業の優先度を下げているのが現実です。


>あとノミ手で流しやすいのでリー棒をせしめると、
>手が厳しくてもラスは引きにくい、という感じがしています。

この件に関しては、今やってる鳴きの攻防の修正で改善されると見込んでます。

>特にオーラスは無意味なあがりやリーチが多い印象です。

オーラス間際の判断は大きな欠点の一つと認識してます。
これも、厳密にやろうとすると、実現が困難になってしまうのですが、脳内ではいろいろプランは考えてます。


投稿: kmo2 | 2006/09/06 00:57

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/61182/11594313

この記事へのトラックバック一覧です: まだまだ鳴き対策作成中:

« 第2東風荘アカウント数 | トップページ | TurboC++ »