※麻雀ロジック研究会※
■ このスレッドは過去ログ倉庫に格納されています
麻雀のロジックについて研究しませんか?
麻雀ゲームなんかで強いCPUキャラクターとやると
どうしてもプログラムの方で積み込んでいるとしか思えません。
人間の思考に近づくロジックを話し合いませんか? 最も必要な牌がわかるならイカサマ無しでも強いと思う 最も必要な牌が分からなくても、必要な牌は分かるよね。
シャンテン数が上がるか否かの判定だけでも十分。
点数の期待値とか一切考えず、シャンテン数が上がればその中からランダムで決めるって操作だけでも、
>>159のイカサマをされれば十分きつい。
上がってしまえば、相手がどんなに高めを狙おうと関係ないし。 んなもの知らんよ。
最も必要な牌が分かるならイカサマ無しでも強いって言ってたから、
イカサマするのに最も必要な牌が分かる必要はないと反論しただけ。 シャンテン数判断を組み込めるってのが十分高いハードルだからなー
イカサマいらなくなるでしょ >シャンテン数判断を組み込めるってのが十分高いハードルだからなー
お前にとってシャンテン数の判定が高いハードルなら、麻雀ロジックを考える上で何なら出来るんだよ…。
自分で作れなかったとしても、シャンテン数判定プログラムなんてググればソース付きで見つかるだろ。 上がり判定アルゴリズムが正しく作れるなら
普通シャンテン数判定も出来るわなぁ 役判定の高速化法でこいいよ。。
これとモンテカルロ法を組み合わせたら強いと思う。
役が揃ってない13枚に対し、ランダムに牌を追加していき役が揃った時に、元の牌に得点づけする。
これを繰り返すと、役が揃いやすい(=和了型に残りのやすい)牌が求まる。
14枚の和了型を基本に、包含で大小関係をいれれば、15枚以上のとき和了型を含むかわかるだろう。
麻雀 和了判定(役の判定)アルゴリズム 連続した牌の数をインデックスにする方法
http://hp.vector.co.jp/authors/VA046927/mjscore/mjalgorism.html 0.優劣判定の準備
param[][14]を用意
1.今のシャンテン数、アガリチェック
tehai[14]に対して、シャンテン数計算。
-1ならアガリ役チェックに移る。
2.打牌毎のシャンテン数チェック
ある牌を切ったtehai[13](14通り)それぞれに対して、シャンテン数計算。
基本的には1のシャンテン数から変化しない打牌が正着。
1のシャンテン数との差をparamに保存。
マイナスならシャンテン戻しになる打牌。
3.受け入れ、有効牌チェック
さらに、34通りの牌をツモった時を想定したtehai[14]それぞれに対して、シャンテン数を計算。
シャンテン数が減る牌種がいわゆる有効牌。
有効牌の種類数をparamに保存。
また、実際の数を数え上げ、paramに保存。
また、シャンテン数が-1の時(受け入れ=待ちの時)、
そのアガリ翻数(MAX)を計算し、paramに保存。
さらに、アガリ翻数*枚数を足し合わせ、paramに保存。
4.安全度
完全安全牌>ノーチャンスアンコ牌>…
それぞれ該当するなら1,該当しないなら0を入れて、paramに次々に保存。
5.総合判断
できたparam行列に対して、係数により重み付けを行う。
シャンテン数は最重要なので20倍、など。順目やリーチ者の数が増えていくと安全度の重みが増し、
危険な場面ではシャンテン数の重要度を超えるようにする。 ポイントは、オリの局面で安全度で同点首位の2択になったような場合、
自然と手牌をぐちゃぐちゃにしない打牌が選ばれるところ。
例
2件リーチ
456mの5mと6mが完全安牌で100ポイント
受け入れポイント的に微差で6mが高得点
パラメータの調整にあたって、今後、機械学習を導入する方針。
少しずつパラメータを変えたAI同士を戦わせて、成績が良いほうを残していく方法を考案中。
何かご意見あればお願いします。 捨て牌選択時の役判定はかなり重要
特に鳴いた後
混一色一択で鳴いたのに形テン狙いのまま字牌を切りまくるクソAIとかw
あるいは手が確定できる鳴きしかやらないというのもゲーム的にはアリだけど
終盤になると有効牌の残り枚数も無視できない
もひとつ、振りテンチェックも地味に効く…見逃ししないならそれほどでもないか 簡単にお金が稼げる方法興味ある人だけ見てください。
グーグル検索⇒『来島のモノノリウエ』
R664ZOAJOL ■ このスレッドは過去ログ倉庫に格納されています