※麻雀ロジック研究会※
■ このスレッドは過去ログ倉庫に格納されています
麻雀のロジックについて研究しませんか?
麻雀ゲームなんかで強いCPUキャラクターとやると
どうしてもプログラムの方で積み込んでいるとしか思えません。
人間の思考に近づくロジックを話し合いませんか? >>126
あれ、今見てみたらちゃんと分離されてますね、何勘違いしたんだろw
とりあえず入試が終わるまで全然手つけられなさそうな今日この頃ですorz
明日入試なんだけど受かる気しないやorz 見にいったけどひどくレベルが低くないか?
テンパイチェックすら組めなそうな人ばっかりに見える >>117のソース、興味ある。
誰か上げてくれないか。
せのたんは仮性包茎だったけど太めで包皮の上からカリが分かるプックリ型で良チンだったよ 純粋に役判定だけしてくれるライブラリって無いですかね。 >>139
面白そうなことしてますね、HP見たけどどこまで進んでるか不明だった。
麻雀AI持ってるから、その上で動くAI作ってもいいけど。
いつ頃そのようなことができる?
ただし、C++のみRubyは覚える気ないのよ〜〜、 Winにも入れる気がなかったりして・・・ 天鳳shirou_0のタメツモタメロン逆切れ粘着ストーカー最強 まだやってんのかこのスレ(w
真面目にロジック組もうとすると、
すぐ組合せ的爆発を起こすんだよな。
最近はリソースが豊富なだけに、
落ちるまでが長いからけっこう始末が悪い。
しかも定跡らしき手法がないんだコレが。
ジン・ラミーなんか麻雀よりだいぶ簡略化されてるが、
SE研修で「ジン・ラミーの上がり判定」を課題にしたら、
けっこう高給取りのはずの中級SEが二人掛りで二日かかっても
論理設計すらできずにギブアップした(w
プロダクション・システムを適当にでっち上げて
学習で鍛えるのがまだしも現実的だが、
所ジョージが言うように
『麻雀の必勝法は 素早いチョンボである
人が見てないうちに 勝手に自模っちゃう』
が結局いちばん効果的だと思う。 >>147
いいこと言った(w
だけど、AIって基本「相手が誰か分からない」っつー
前提があるじゃん?
相手の癖とか考慮できないわけだし、
コンビ打ちとかされたら、
不完全記憶ゲームだから解がない可能性だってあるわけだ。
AIで特定の条件で有効なシステムが組めたとして、
それって本当に意味あんのか?っつー話になんねぇ? >>148
そういう人間っぽい戦略をするAIはある意味夢だよねw
でも、無作為な相手を対象としたAIでも価値はあると思う。
もし無作為な相手を対象として、平均的に強いAIが組めたら、
それより強いAIを組むために使えるじゃないかw >>149
> そういう人間っぽい戦略をするAIはある意味夢だよねw
待て待て。まず、
・プレイヤーの個人認証をする(過去の対戦記録から
対策を練ってくる)。
・戦略に名前とキャラを与える(プレイヤー側のハンデに
ならないように、条件を同じにする)。
つーところから始めたらどうだろう。 一人のAIをこのスレの住人でフルボッコにするシステムを作って、
住人の打ち筋から学習するわけですな。
でも、まず戦略上の有意で重要なパラメータが何かが分からないと思うんだ。
ベタ降り 早上がり 大物狙い
ぐらい大雑把なのは思いつくけどさ。 ジン・ラミーは
・半端なカードがあっても合計十点以下なら上がれる
・逆ノックというルールがある
とかでゲーム性を高めているんだが、
麻雀では
・手が揃わないと上がれない
・とにかく他の奴より早く、あるいは同時に上がらないと点にならない
の二点をめぐる攻防がキモになってくる。
そこから、
・基本は早上がり
・早すぎても安かったらおいしくないので、
どこまで待ってどこまで点数を上げるかが重要
・誰かが牌を抱えてたり底に沈んでたりするとダメだから
待ちを拡げるかどうかも配慮する必要があるし、
相手の手を読むことも考えたほうがいい(ヒッカケも
この一種)。
・役に対する好みは確率にも相性にもかかわってくるので、
どう利いてくるか今のところ不明
あたりを念頭に大雑把に組んでみりゃ
プロトとしてはよさそうに思う。 >>146
>SE研修で「ジン・ラミーの上がり判定」を課題にしたら、
>けっこう高給取りのはずの中級SEが二人掛りで二日かかっても
>論理設計すらできずにギブアップした(w
それSEの能力が足りないだけじゃん できるだけ、自然に見えるようにイカサマする。
レベルによって1〜5個ほど島からツモり、必要な牌を1つとり、もどす。
最も必要な牌がわかるならイカサマ無しでも強いと思う 最も必要な牌が分からなくても、必要な牌は分かるよね。
シャンテン数が上がるか否かの判定だけでも十分。
点数の期待値とか一切考えず、シャンテン数が上がればその中からランダムで決めるって操作だけでも、
>>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 ■ このスレッドは過去ログ倉庫に格納されています