イヌでもわかるJavaScript講座
|
Step.77 - ミニロトを予想する
|
乱数を使って、ミニロトの番号を予想します。 このステップで、トランプカードをシャッフルして、配られたカードをソートするアルゴリズムを学ぶことができます。 |
Step テーマ ● シャッフル/ソート |
実行例Tatsuya's ミニロト こんなの でましたぁ〜 → |
リスト
|
サンプルだけの HTMLは こちらへ |
説明トランプなどのカードゲームは、まず、カードをきらなければ(シャッフル)なりません。 つぎに、カードを配って、それを小さい順に並べ替えたい(ソート)ものです。 今回は、このシャッフルとソートをお勉強してみましょう。 サンプルは、同じ考えかたを持つミニロト番号を予想しています。 トランプやミニロト以外にもタロット占いや麻雀のシーパイ、ハイパイにも使えます。(^^; では、まず、シャッフルを考えてみましょう。 説明では、1から13までの数字をめちゃくちゃな並びにします。 まず、13個のテーブルを用意します。
次に、そのテーブルに1から13までを順番にセットします。
はい、これで、テーブルの中身は、 きれいに、揃っています。(^^; では、めちゃくちゃにシャッフルしてみましょう。 シャッフルの考え方ですが、要するに、中身をメチャクチャに入れ替えれば、いいわけです。 メチャクチャといえば、乱数ですね。乱数を使いましょう。(^^;
では、myA番目とmyB番目のテーブルの内容を入れ替えます。
まず、myA番目の内容を myBackup に待避させておきます。 そして、myB番目の内容をmyA番目にセットします。 そして、myB番目に先ほどのmyA番目にあったデータ myBackup をセットします。 入れ替え終了です。 これで、13個のテーブルのどこかとどこかがシャッフルされました。myAとmyBが偶然同じだったりして。(^^; では、これを500回くらい繰り返したら、どうなるでしょう。
どうやら、めちゃくちゃになったようですね。満足しなかったら、1000回でも10000回でもどうぞ。(^^; さて、次は並べ替え(ソート)ですね。 トランプで、Aさんに5枚配るとします。myData[0] から myData[4] の5枚を配りましょう。 Aさんには、 が、配られました。これじゃ、見にくいですね。ソートしてみましょう。 一番簡単な方法でやりましょう。 この方法とは、 まず、一番上のカード (myData[0]) を基準とします。 そして残りのカード (myData[1]〜myData[4])の中を順番に見ていって、基準( myData[0] )よりも小さかったら入れ替えます。 これで myData[0] は5枚のカードの中で一番小さな番号になったはずです。 次に基準を一つ下 (myData[1])に移して、残りのカード(myData[2]〜myData[4]) を順番に見て同じことをします。 こんな感じで、基準のカードを枚数−1 つまり、myData[3] までやっていきます。 プログラムにすると、
i が基準の位置。 j が残りのカードの位置を指しています。 「なんだ、シャッフルやソートって、こんなに簡単なのね」と理解できたら、はっきりいって、かなりプログラム知識ができてきましたよ! |