FC2ブログ

*All archives* |  *Admin*

<<04  2020/05  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31  06>>
理牌をするための必要並べ替え回数
今日はちょっとした小ネタを思いついたので、Pythonの練習がてらにやってみました。

リアル麻雀で、普通に山から4枚ずつ取ってくるのでも、自動配牌卓でもどちらでもいいですけど、
配牌を取ってくると普通は牌の順番がばらばらなんで理牌する必要がありますよね。

理牌をするための牌の入れ替え回数って平均で何回くらいなんだろう?というのが今回のテーマです。

並べ替えの法則は以下の通りとします。

①13枚の配牌をランダムに取る。
②左側にソート済みの手牌、右側に未ソートの手牌を置く。
③左からi(i=2~13まで繰り返し)番目の牌について、ソート済み手牌の右端の牌より牌番号(マンズ1~9、ピンズ10~18、ソーズ19~27、字牌28~34。赤牌は区別しないものとする。)が小さい場合、ソート済み手牌の中の適切な場所に左からi番目の牌を移し、入れ替え回数を+1する。ソート済み手牌の右端の牌と同じ牌か牌番号が大きい場合はそのままの順番で合ってるので、次のi+1番目の牌の比較へと移る。
④ ①~③を10万回繰り返し、各シナリオの牌の入れ替え回数を記録する。

だいぶ原始的なソート方法です。専門用語で〇〇ソートとかいう名称がついてるんでしょうけど、詳細は知らないです。

ソースコードはこんな感じ↓。
181020-05.txt

結果はこんな感じ↓。
181020-04.png

平均値は9~10回くらいの並べ替え回数になってます。めんどくさいですね。

熟練者だと色とか昇順降順を変えるとかで、もっと並べ替え回数の少ない方法があったりするんでしょうけど、私レベルではよくわからないです。

今日の結論:自動理牌のあるネット麻雀は神。
スポンサーサイト



コメントの投稿

Secret
(非公開コメント受付中)

コメント

このソートアルゴリズムについて
挿入ソートというアルゴリズムですね。O(N^2)ですがNが14ぐらいでは最善のソート方法です。
プロフィール

nisi5028

Author:nisi5028
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
フリーエリア
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード