- 1 名前:1 mailto:麻雀ってまぁまぁじゃん [05/01/10 13:48:12]
- 麻雀のロジックについて研究しませんか?
麻雀ゲームなんかで強いCPUキャラクターとやると どうしてもプログラムの方で積み込んでいるとしか思えません。 人間の思考に近づくロジックを話し合いませんか?
- 96 名前:名前は開発中のものです。 [2006/11/11(土) 10:51:40 ID:bfMsKF2A]
- 東風荘の代打プログラムを作って、100試合ほど打たせてみた。
安定Rが1100しかなかった(´・ω・`) 実装した機能は以下の通り。 ・普段は単純に聴牌一直線。具体的には、シャンテン数を落とさずに 受け入れが広くなるように切る。ドラおよびドラ付近は評価を高めに。 ・鳴きは役牌のみ。 ・残り山枚数が20枚以下になると、形式聴牌を取りにいく。 ・相手から先制リーチが入ると、現物→字牌→筋の順でベタオリ。
- 97 名前:名前は開発中のものです。 mailto:sage [2006/11/11(土) 11:45:38 ID:z2w53djY]
- ベタオリ機能外した方がよくねえか?
- 98 名前:96 [2006/11/11(土) 14:19:21 ID:bfMsKF2A]
- >>97
そうかなあ。 ベタオリ機能を実装してから、成績がだいぶ安定したから 必須機能だと思ってたけど・・・
- 99 名前:名前は開発中のものです。 mailto:sage [2006/11/11(土) 20:49:33 ID:GfQHFT1U]
- ベタオリする条件を先制リーチと別に、もういくつか設定してみたらどう?
たとえば残り山数が少なく、シャンテン数が高いとか 切れる牌が危険牌だらけとか上がれそうもなかったら、ベタオリ。 まだ、山数が十分あるとか、シャンテン数が低いとか、切れる牌の危険度が 低かったら続行するとか。
- 100 名前:96 [2006/11/13(月) 09:22:52 ID:duDFKbMP]
- >>96からさらに100試合ほど打たせてみた。
すると、その100試合の安定Rが1650で、 >>96の100試合と合わせた計200試合の安定Rが1450に。 まだまだ試合数が少ないから断言はできないけど、 今までは運が悪すぎたのかなあ。 とりあえずは旧上ランの入り口である、R1600を目指して がんばります(`・ω・´)
- 101 名前:名前は開発中のものです。 mailto:sage [2006/11/13(月) 19:32:23 ID:/l9lVeym]
- 勝ちが安定しないって、ようは運任せで、アルゴリズム関係なしなんでは?
- 102 名前:名前は開発中のものです。 mailto:sage [2006/11/13(月) 23:38:07 ID:BdVR9VSj]
- シャンテン数が高いときはベタオリにして、
それ以外のときは ゆるくオリるような打ち方がいいんではないかと。 つまり、現物、字牌、筋、 リーチ者が序盤に切った牌の周りなどを 安全そうな牌としといて、 安全そうな牌かつシャンテン数を落とさない牌を打つようにする。 さらに精密にやるなら安全度を点数化するといいかも。
- 103 名前:名前は開発中のものです。 mailto:sage [2006/11/14(火) 19:32:08 ID:MANy7Ws5]
- やっぱりベタオリは改善の余地があると思う。
勝ってるときはベタオリ、負けてるときは、続行とか。 あとは鳴きが役牌のみってところかな? チンイツとかホンイツとかトイトイとか、いくつかの役に対して、シャンテン数計算して、 いくつ以下ならその手を目指してチーポンを積極的に行うとかはどうだろうか。
- 104 名前:96 [2006/11/19(日) 22:34:00 ID:t1T5Qf2N]
- みなさんレスありがとうございます。
平日は忙しい上に、PCがつかえない環境にいるため、 返事ができなくてすみません。 ところで、他にも東風で代打プログラムを 動かしてみたいという方はいらっしゃいませんか? もし、代打プログラムを作ってみたいが、とつげき東北さんが配布されている MJexeIO.dllを使ってもスキルが足らずに作成できない・めんどくさいという方が おられましたら、僕が作成したプログラムでよければ公開させていただきます。 今のところ搭載している機能・特徴は以下のとおりです。 1.とつげき東北さんが配布されているMJexeIO.dllに皮をかぶせて使いやすくしています。 具体的には、 ○画面から情報を取得する関数を自作の関数の中で適切によびだしているため、 プログラマ自身が画面から情報を取得する関数を呼び出すタイミングに頭を悩ませる必要はありません。 画面から取得された情報は、自作の構造体(手牌構造体やプレイヤー構造体など)に格納されます。 ○自分の順番が回って来た時にどの牌を切るかを返す関数、チーやポンをするかどうか尋ねられた時に 鳴くかどうかを決定する関数のみを実装すれば、自分の思い通りに動く代打プログラムが作れます。 2.一度起動すれば、プログラムを終了するか、東風が回線落ちするまで、延々と打ち続ける機能を搭載しています。 3.自分の手牌のシャンテンを計算する機能、場に見えている牌の枚数を数える機能、有効牌を計算する機能 (ここでいう有効牌とは、自分の手牌のシャンテン数を下げる牌を意味します)、4人の捨て牌を時間順に並べる機能 (この機能により、MJexeIO.dllのSimulateOrder関数に付きまとっていた、切られた牌の順序決定不可能性の問題 を回避できます)など、代打プログラムを作成する上で、必要と思われる機能を搭載しています。 (時間があれば、自分の手牌の役を認識する機能を搭載する予定です。) 4.僕自身はプログラミングを趣味としているただの学生ですので、スキル的な問題により、ソースコードは汚いですし、 上記機能の処理速度も速くはありません。デバッグは十分に繰り返したつもりですが、バグがないことを保障できません。
- 105 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 03:34:26 ID:flZCi+aK]
- >>104
興味あり。公開してほしいな。 まあ、俺は代打プログラムを作れるような頭は持ち合わせていないが。
- 106 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 21:10:36 ID:8qCQQBvr]
- うちは、代打ちじゃなくて全部オリジナルで作ってるんで、
プログラム自体は必要ないけど、アルゴリズムとか、 どんなことをやってるかソース中にコメントとかあれば見てみたい。 作ってるのはエロゲなんで、強い思考ルーチンはいらないんだけど。
- 107 名前:名前は開発中のものです。 mailto:age [2006/11/24(金) 22:26:28 ID:WoA2EPYX]
- しかし、こんなにいるんや。
こんなこと考える人! やっぱ、パラメタ、重みつけ。 あと、ひたすら統計になるんかなー?
- 108 名前:名前は開発中のものです。 mailto:sage [2006/12/12(火) 23:21:53 ID:svbHb3hn]
- 統計取るなら聴牌思考の指向性についても考えたほうがいいんじゃないかな
具体的には棒聴即リールーチンと期待値計算して遠回りしても高い手を和了るルーチンのどちらが強いか ってのを東風かなにかで実戦に投入しながら統計をとるってことで でも、麻雀の統計として具体的に何局ほどサンプルをとればいいんだろうか… 20万局ぐらい?
- 109 名前:96 [2006/12/28(木) 20:24:12 ID:IWNuZXZH]
- >>100からさらに改良を加えて、200試合ほど打たせてみたところ、
安定Rが1600付近まで上昇しました。 特に、好調だった80試合を見ると、安定Rが1900強に。 改良点は以下のとおり。 <聴牌に向かっているとき> 今まで:面子手のみ。 ↓ 改良版:チートイツも組み込んだ。 <ベタオリ時> 今まで:2人が同時に攻めてきた場合、自分から反時計に見て 近い方しか警戒していなかった。 ↓ 改良版:他家それぞれに警戒係数という指標を導入し、 複数他家の攻撃にも正確にベタオリできるようにした。 <状況判断> 今まで:他家からリーチがかかったときのみベタオリ ↓ 改良版:他家のリーチだけでなく、食い仕掛けにも対応。 また、自分の手がよければ、先制されても攻めるようにした。 <牌効率> 今まで:シャンテン数を下げない牌を一枚切る。 その際に、内側の牌・ドラ・ドラソバに高評価を与えていた。 改良版:一打一打ごとにモンテカルロシミュレーションを行い、もっとも手牌のあがりへの 寄与が低い牌を切るようにした。
- 110 名前:名前は開発中のものです。 [2006/12/29(金) 18:27:19 ID:sGXeTFgC]
- カルネージハート(或いは、FF12のカンビット)のように
みんながアルゴリズムを組みやすいアプリケーションがあればいいと思った。 麻雀がうまくてもプログラムなんて組めないって人多いだろうし。
- 111 名前:名前は開発中のものです。 mailto:sage [2006/12/29(金) 18:38:40 ID:J1Q+yA/u]
- 麻雀は、カルネージと違って、サブサンプション的にどうこうするってものでないからな
アルゴリズムというよりむしろ統計処理か まあ、パネルプログラミング的なインターフェイスはあったら面白いかも
- 112 名前:名前は開発中のものです。 mailto:sage [2006/12/29(金) 19:27:02 ID:XZsMB63t]
- >>109
研究用にソース欲しいんですけどオープンソースですか?
- 113 名前:96 [2006/12/29(金) 21:53:15 ID:DWfKfu8r]
- >>112
僕のしょぼいソースでよければ公開させて頂きますよ。 言語はCです。 ただ、あくまで東風代打ツールとして作ってるんで、 研究用には使えないかと思います。 >>104で書いたんですけど、反応が薄かったんで、放置してました(笑)
- 114 名前:名前は開発中のものです。 mailto:sage [2006/12/29(金) 22:12:09 ID:XZsMB63t]
- >>113
ありがとうございます。 リアルでも使える代打ちプログラムを作りたいと思ってるので助かります。
- 115 名前:96 [2006/12/29(金) 22:17:26 ID:DWfKfu8r]
- >>115
いろいろ改良を重ねているうちに、ソースが汚くなってきたので、 ちょっと整理に時間がかかるかと思います。 明日の夜には間に合うと思いますので、 申し訳ありませんが、それまでお待ちください。
- 116 名前:高島易者のつぶやき mailto:暴力団の資金源 [2006/12/30(土) 02:07:11 ID:6keB+Ie9]
- そんなことより、ちょいと聞いてくれよ、>>1よ。
昨日、あるホテルで高島易断の鑑定会やったんです。鑑定会。 そしたらなんか人がめちゃくちゃ少なくガラガラなんです。 で、よく見たらなんか貧乏臭い客がいて、「運勢鑑定3000円ですよね」、とかほざいてるんです。 もうね、アホかと。馬鹿かと。 お前らな、運勢鑑定如きで普段来てない高島易断に来てんじゃねーよ、ボケが。 御祈祷だよ、御祈祷。 なんか親子連れとかもいるし。一家4人で高島易断か。おめでてーな。 よーしパパ運勢鑑定頼んじゃうぞー、とか言ってるの。もう見てらんない。 お前らな、3000円やるから帰ってくれと。 高島易断ってのはな、もっと金持ちが来るべきなんだよ。 テーブルの向かいに座った奴に因縁話吹っかけてもおかしくない、 乗せるか逃げられるか、そんな雰囲気がいいんじゃねーか。女子供は、すっこんでろ。 で、やっと別の客が来たと思ったら、そのうちの一人がまた、3000円ですよね、とか言ってるんです。 そこでまたぶち切れですよ。 あのな、3000円の鑑定なんてきょうび流行んねーんだよ。ボケが。 得意げな顔して何が、3000円の、だ。 お前は本当に3000円の鑑定を受けに来たのかと問いたい。問い詰めたい。小1時間問い詰めたい。 お前、3000円の鑑定って言いたいだけちゃうんかと。 高島易者の俺から言わせてもらえば今、高島易者の間での最新流行はやっぱり、 年間36万円の因縁切りの御祈祷、これだね。 2年分72万円。これが通の頼み方。 御祈祷ってのは金がまとまって入る。そん代わり手間が掛からない。これ。 で、それに1年分100万円の特別祈祷。これ最強。 しかしこれを勧めるとと次からカモ(客)に警戒されるという危険も伴う、諸刃の剣。 素人にはお薦め出来ない。 まあお前ら貧乏人は、近所の神社でオミクジでも引いてなさいってこった。 高島易断について■part3 hobby8.2ch.net/test/read.cgi/uranai/1155287091/l50
- 117 名前:96 mailto:sage [2006/12/31(日) 06:46:41 ID:57FmFyf5]
- 風邪のため作業が捗らず、遅くなりましたが、
東風荘代打プログラムのソースコードです。 kasamatu.o0o0.jp/pochi/src/hajime7610.zip.html 受信パス:hebo_vip 解凍パス:hebohebo_vip
- 118 名前:名前は開発中のものです。 mailto:sage [2006/12/31(日) 07:27:55 ID:kaT/o5X3]
- ありがとうございます ノ
- 119 名前:96 [2006/12/31(日) 14:39:40 ID:57FmFyf5]
- すいません、バグがあったので、修正をお願いします。
strategy.cppの176行目、SelectDiscardTile_SevenPairsOriented関数の 最初の変数宣言部で、max_effective_tile_number = DBL_MAX; と なっているところを、 max_effective_tile_number = DBL_MIN; に修正して下さい。 なお、本プログラムの成績は下図をご参照下さい。 kasamatusan.sakura.ne.jp/cgi-bin2/src/ichi67644.jpg
- 120 名前:名前は開発中のものです。 mailto:sage [2006/12/31(日) 17:59:56 ID:JPe3tcsE]
- 乙
- 121 名前:96 [2007/01/07(日) 01:59:23 ID:GOuBSiwa]
- 全然反応がないです・・・(´;ω;`)ブワッ
- 122 名前:名前は開発中のものです。 mailto:sage [2007/01/07(日) 07:49:18 ID:cR1YsYdq]
- >>121
難しい分野だから仕方ないね。 俺も面白そうと思ってやろうとしたけど、すぐに(数学的な?)壁にあたってしまった。 面白そうではあるけど、敷居が高いねえ。
- 123 名前:96 [2007/01/07(日) 08:39:12 ID:GOuBSiwa]
- >>123
現時点の僕のプログラムは安定Rが1600程度ですが、 まだ高校数学以上の数学は一切用いてないです。 数学よりも、バックトラッキングや再帰関数といった プログラミングの知識の方がはるかに重要じゃないかと思います。 もちろん、強いプログラムにしていく過程で数学の壁にあたることに なるとは思いますが、ひとまず動かしてみて、思考ルーチン部分の パラメータをいじるなどして感覚をつかめばソースコードの理解も 早まるんじゃないかと思います。 ちなみに、前からの課題であった役認識・点数計算プログラムを実装しました。 次はこのプログラムをいかに思考ルーチンに組み込むかが課題です。 このプログラムによって期待値の概念を思考ルーチンに導入することが 可能になるので、上手に組み込めば飛躍的に強くなるんじゃないかと期待してます。
- 124 名前:名前は開発中のものです。 mailto:sage [2007/01/07(日) 12:44:33 ID:cR1YsYdq]
- >>123
高校数学すらおぼつかないので・・・ また、うぷしてもらったソースを理解して改造していくのは難しそうだし、悪いけどそれはあまり楽しそうでない。 まずは、もっと単純なところから、 例えば、1人麻雀でテンパイに向かうだけのプログラムとかからはじめようかと思う。 車輪の再発明って言われるかもしれないが、この場合はプログラミング自体が「遊び」なので。 みんながスーパーマリオの1面をプレイするように、みんなが通っていいかなと。 その後で、参考にさせてもらうとおもう。
- 125 名前:名前は開発中のものです。 mailto:sage [2007/01/18(木) 22:19:21 ID:JqheaSzi]
- 今日初めてここ着たけど、とりあえずソース読ませてもらったよー
別の麻雀ソフトでも対応できるようにデータ取得部分と思考部分が分離されてると思ってたから、 あんまり分離されてなさそうなのが意外だったかも。 ぶっちゃけデータ取得部を流用させてもらおうと思ってたから残念 ちなみに、正直Cで変数いじりしかまともにできない俺にはいまいちわからんw もうしばらくしたらAI作りはじめられると思うからその時はよろしくっ
- 126 名前:96 [2007/02/12(月) 15:20:17 ID:IDAaCxE5]
- やっと修論を書き終えることができました!
三徹の影響で頭がぼーっとしているため、日本語が変かもしれませんが、ご容赦くださいw >>124 確かに趣味で行う以上は「楽しさ」が最優先ですもんね。 僕も作る作業自体が楽しいので、車輪の再発明だらけです。 実際、MJexeIO.exeで提供されている機能以外は全部一から実装しましたし。 >>117でソースを公開した後、シャンテン数計算のルーチンを改良したのですが、 その結果、今までの5倍くらい計算時間を短縮することができ、 あらのHPやcomjong.comで紹介されているアルゴリズムよりも高速化することができました。 こういう些細なことでも進歩が見られると楽しいものです。 >>125 こちらこそよろしくです! データ取得部は関数単位で分けてあるので、ある程度分離されてはいると思うのですが・・・ 少なくとも、データ取得部と思考部がごちゃまぜになっているということはないはずです。 まあ正直な話、僕自身も変数いじりくらいしかできないので、そこら辺のことはよく分からないんですけどね(笑) もう少し具体的に意見を頂ければ、修正もできるかと思います。
- 127 名前:名前は開発中のものです。 mailto:sage [2007/02/13(火) 06:51:43 ID:gYGMMXlO]
- >>126
あれ、今見てみたらちゃんと分離されてますね、何勘違いしたんだろw とりあえず入試が終わるまで全然手つけられなさそうな今日この頃ですorz 明日入試なんだけど受かる気しないやorz
- 128 名前:名前は開発中のものです。 [2007/03/25(日) 17:39:09 ID:/+ddsj91]
- おまいら最強の麻雀プログラムしてみろよ
pc11.2ch.net/test/read.cgi/tech/1169642436/
- 129 名前:名前は開発中のものです。 mailto:sage [2007/03/25(日) 18:32:15 ID:UqHs+UFp]
- 見にいったけどひどくレベルが低くないか?
テンパイチェックすら組めなそうな人ばっかりに見える
- 130 名前:名前は開発中のものです。 [2007/03/27(火) 18:23:15 ID:AcanRDec]
- >>94
「MJSim」の最新版って有る?
- 131 名前:名前は開発中のものです。 [2007/06/17(日) 16:57:24 ID:rBhd2fbQ]
- >>117のソース、興味ある。
誰か上げてくれないか。
- 132 名前:名前は開発中のものです。 mailto:age [2007/08/10(金) 22:29:37 ID:/4P+OHAU]
- aaa
- 133 名前:リンク mailto:age [2007/09/30(日) 19:03:23 ID:IMLVX+zL]
-
なぜ最近の犬学生は麻雀できない奴が多いの? ex23.2ch.net/test/read.cgi/campus/1191128147/l10 ★★★ 学校で麻雀を教えるべきだ ♪♪♪ school7.2ch.net/test/read.cgi/edu/1190440186/l10 なんで最近の若者は麻雀できない奴が多いの? money6.2ch.net/test/read.cgi/mj/1159088315/l10
- 134 名前:名前は開発中のものです。 [2007/10/04(木) 21:01:57 ID:HFnYJuJ5]
- せのたんは仮性包茎だったけど太めで包皮の上からカリが分かるプックリ型で良チンだったよ
- 135 名前:名前は開発中のものです。 [2008/04/18(金) 23:45:53 ID:ZXDlZmWL]
- まだこのスレがあったwww
- 136 名前:名前は開発中のものです。 [2008/04/27(日) 15:51:10 ID:7kUIsgPs]
- おまいら最強の麻雀プログラムしてみろよ Part2
pc11.2ch.net/test/read.cgi/tech/1185540470/
- 137 名前:名前は開発中のものです。 [2008/07/27(日) 01:30:55 ID:FAVGJPP8]
- あげ
- 138 名前:名前は開発中のものです。 mailto:sage [2008/07/29(火) 00:08:41 ID:z7Yquf9f]
- さげ
- 139 名前:名前は開発中のものです。 [2008/10/19(日) 00:59:04 ID:7mqKFfWk]
- オープンネットワーク麻雀
sourceforge.jp/projects/openmj/wiki/FrontPage
- 140 名前:名前は開発中のものです。 [2009/02/25(水) 01:01:10 ID:B3OIG4R1]
- 純粋に役判定だけしてくれるライブラリって無いですかね。
- 141 名前:名前は開発中のものです。 mailto:sage [2009/02/25(水) 15:38:50 ID:O2MoAZ4b]
- >>140
作ってうp
- 142 名前:名前は開発中のものです。 mailto:sage [2009/03/12(木) 21:59:56 ID:zQ85wj82]
- 作った
- 143 名前:名前は開発中のものです。 mailto:sage [2009/03/31(火) 11:17:50 ID:8CzZ1Tdw]
- >>139
面白そうなことしてますね、HP見たけどどこまで進んでるか不明だった。 麻雀AI持ってるから、その上で動くAI作ってもいいけど。 いつ頃そのようなことができる? ただし、C++のみRubyは覚える気ないのよ〜〜、 Winにも入れる気がなかったりして・・・
|

|