小粒プログラミング 牌山

#01 牌山を生成する

更新日:

Javascriptで遊ぶ麻雀小粒プログラミング
今回のお題は、牌山の生成と生成した牌山を乱数でシャッフルする処理を紹介します。乱数は「Mersenne Twister in JavaScript」を使用して発生させます。

プログラムの実行

牌山を生成します。牌山は配列(yama)に保存されます。配列(yama)のサイズは0~135あり、牌の総数に対応しています。

牌山の牌に割り振られた番号
▲配列に保存されている牌山のイメージ(一番目の牌山)

牌山を生成する手順

最初に牌種ごとに整列した牌山を生成(元の牌山)します。JSON形式の配列(paiYama)の値(paiNo)を牌山(yama)に順番に代入します。最後に生成した牌山を乱数処理でシャッフルして作業は終了します。以上で、撹拌された牌山のできあがりです。

元になる牌山「一萬~九萬赤五萬、一筒~九筒赤五筒、一索~九索赤五索、字牌」が順番に並んで積まれている状態
シャッフルした牌山元になる牌山を乱数で並べ替えて積み直した状態

牌山生成プログラムの実行

[牌山生成&シャッフル]ボタンを押すと、元に牌山と乱数でシャッフルされた牌山が生成されます。出力された数字は牌の種類を示します。牌種の番号は配牌を配列に格納するの記事を参考にしてください。

元の牌山
 
シャッフルした牌山
 

擬似乱数生成器~メルセンヌ・ツイスタ

本サイトでは乱数生成にたびたびメルセンヌツイスターを利用することがあります。メルセンヌツイスターは擬似乱数生成器と呼ばれるものの一つで、ウィキペディアには次のように紹介されています。

メルセンヌ・ツイスタ (Mersenne twister、通称MT) は擬似乱数生成器 (PRNG) の1つである。1996年から1998年(1996年国際会議で発表、1997年朝日新聞記事、1998年1月論文掲載)に松本眞と西村拓士によって開発された。既存の疑似乱数生成アルゴリズムの欠点を改良して、高品質の疑似乱数を高速に生成するように設計されている。 2007年1月31日、松本眞とその指導学生の斎藤睦夫により、上記の改良版SFMTがウェブサイトに発表された。現在、公式ウェブサイトからダウンロードできる。 「メルセンヌ・ツイスタ」『フリー百科事典 ウィキペディア日本語版』より(http://ja.wikipedia.org/)。2015年3月24日22時(日本時間)現在での最新版を取得。

JavaScriptにも乱数を発生させるrandom関数が用意されていますが、牌山を生成する際は、メルセンヌツイスターを使うことにしてます。 本サイトでは、JavaScriptに移植されたMersenne Twister in JavaScriptで乱数を発生させています。詳しい使い方は、公式サイトMersenne Twister in JavaScriptをご覧ください。



JavaScriptソースコード

本記事で紹介したサンプルプログラムをダウンロードできます。

ダウンロードをする前にお読みください

  • サイトで紹介している記事の内容や公開しているプログラムの動作は100%保障するものではありません。
  • 当プログラム使用による如何なる不具合やトラブル、損害の責任も負いかねます。
  • 当プログラムは断り無く内容が変わることがあります。
  • 当プログラムを別サイトで配布することは禁止します。
  • サポートはいたしません。
  • 自己責任にてご利用くださいませ。

以上をご確認の上、プログラムのダウンロードをお願いいたします。

サンプルプログラムのソースコード

ソースコードは折りたたんであります。[+]を押すと、折りたたまれたソースコードが開きます。[-]を押すと、コードは折りたたまれます。

program_001.jsのソースコードを開く

おすすめレンタルサーバー

エックスサーバー|高速・高機能レンタルサーバー

オールSSDの快適ハイスペック環境」「国内管理、大容量バックボーン」「独自SSLが無料」「FastCGIなどの高速化機能」「最新のPHP7を実装」など、高機能・高コストパフォーマンスなレンタルサーバーです。※当サイトも「エックスサーバー」で運用しています。

 

独自ドメインプレゼントキャンペーン情報

キャンペーン期間中にサーバーアカウントを契約すると、独自ドメインが1つもらえます。しかも、更新料も無料。運用コストを軽減します。

期間は、2017年10月16日より2017年11月30日まで、お見逃しなく。

-小粒プログラミング, 牌山
-

Copyright© 麻雀ツール点数計算ラボ , 2017 All Rights Reserved.