<<変数並び替えパック Ver1.32>> ■概要  このサンプルは変数の値を指定した方法で並び替えるスクリプトのパッケージです。  「昇順」、「降順」、「シャッフル」、「任意の数を後方移動」の4種に、  オプションとして「最大値検索」、「最小値検索」、「平均値算出」の  合計7種を収録しています。 ■注意事項 ・このシステムではスイッチの1番と変数の1〜8番を使用しています。  このスイッチや変数がゲーム本編に使われていますと思わぬ不具合を  発生させる原因となりますのでご注意ください。 ・このシステムは理論上1〜5(〜8)以外の全ての変数の範囲に対応して  いますが、指定した範囲が大きくなるほど処理に時間が掛かることが  ありますので予めご了承ください。  (同じ範囲でも変数の状態によって処理時間が変動します) ・本作品はフリー素材とします。使用の際に作者への連絡は必要ありません。 ・このサンプルの利用は各自の自己責任で行ってください。  使用の際に起こった如何なるトラブルについても作者は責任を負わないものとします。 ・その他何かお気づきの点がありましたら掲示板かメールでお願いします。 ■利用方法 [1] サンプルにはRPG_RT.exe(剣を持った勇者のアイコン)が含まれていません。   他のプロジェクトからコピーしてこのフォルダに貼り付けてください。 [2] まずは普通に起動して内容を確認してください。 [3] 間違いなければプロジェクト基準パスで示されたフォルダの中に移動してください。   初期状態なら"C:\Program Files\ASCII\RPG2000"です。 [4] RPGツクール本体でプロジェクトを開きます。 [5] すでに製作中のゲームに組み込むにはコモンイベントの中から必要なものをコピーして   一度プロジェクトを閉じ、組み込みたいプロジェクトを開いて   コモンイベントに貼り付けして使用します。 [6] プロジェクト間を移動させた場合はスイッチ・変数の名前を書き換えておきましょう。 [7] 変数0001に範囲の最初を、変数0002に範囲の最後を代入して   行わせたい処理を呼び出します。   このとき必ず変数0001の数が変数0002より小さくなるようにしてください。   (仮に変数0001に5(7,8)以下の数や変数0002以上の数が入っていた場合には    不具合防止のため自動的に終了します)   例えば189番から203番までの変数をランダムに並び替えたいなら    ◆変数の操作:[0001]代入,189    ◆変数の操作:[0002]代入,203    ◆イベントの呼び出し:シャッフル   と入力してください。 (注意)   サンプルを自分のゲームに組み込むときは事前にゲームプロジェクトの   バックアップを取っておいてください。    ・別のフォルダにコピーする    ・圧縮してサーバーにアップする    ・フロッピー、CD-Rなどに書き込む    等の方法があります。 ■内容  本体には以下4種類の並び替えプログラムと3種類のオプションを収録しています。  ★昇順   範囲内の変数を小さいものから大きいものへと順番に並べます。   例えば   105,223,8,0,100   という数値があったなら   0,8,100,105,223   の順に並びます。   (変数の1〜6番を使用)  ★降順   範囲内の変数を大きいものから小さいものへと順番に並べます。   例えば   105,223,8,0,100   という数値があったなら   223,105,100,8,0   の順に並びます。   (変数の1〜6番を使用)  ★シャッフル   範囲内の変数を乱数によってばらばらに並び替えます。   (変数の1〜5番を使用)  ★任意の数を後方移動   範囲内の変数から変数[0003:計算結果]に入力された数値をすべて範囲内の後方へ移動させます。   例えば   105,0,8,0,100   という数値があって変数[0003:計算結果]に0を代入したなら   105,8,100,0,0   の順に並びます。   (変数の1〜5番を使用)  ★最大値検索   範囲内の変数から最大値とその数値が収められた変数の番号を出力します。   例えば変数11番〜15番にそれぞれ   105,223,8,0,100   という数値があったなら   変数[0003:計算結果]には223が、[0004:変数の番号]には12が代入されます。   (変数の1〜7番を使用)  ★最小値検索   範囲内の変数から最小値とその数値が収められた変数の番号を出力します。   例えば変数11番〜15番にそれぞれ   105,223,8,0,100   という数値があったなら   変数[0003:計算結果]には0が、[0004:変数の番号]には14が代入されます。   (変数の1〜7番を使用)   注意)最大値、最小値が同じ数値で複数あった場合には乱数によって1つだけが選ばれます。  ★平均値算出   範囲内の変数の平均値を[0003:計算結果]に代入します。   その際、少数は切り捨てられます。   このスクリプトでは変数の合計が999999を超える場合でも   正確に算出できます。   (変数の1〜8番を使用) コモンイベントの8〜12にあるのは様々な方法での並び替えスクリプトです。 作者の環境での速度比較結果を置いておきます。(単位:秒) 1000個の乱数を1回ソート バブルソート:15.24, 15.11 挿入ソート:8.01, 8.29 シェルソート:1.66, 1.71 ヒープソート:0.73, 0.76 100個の乱数を100回ソート バブルソート:15.14, 15.24 挿入ソート:8.42, 8.41 シェルソート:7.26, 7.19 ヒープソート:4.28, 4.31 50個の乱数を500回ソート バブルソート:19.35, 19.23 挿入ソート:11.82, 11.75 シェルソート:13.78, 13.68 ヒープソート:9.11, 9.06 30個の乱数を500回ソート バブルソート:7.06, 6.95 挿入ソート:4.52, 4.41 シェルソート:5.77, 5.56 ヒープソート:4.83, 4.84 10個の乱数を5000回ソート バブルソート:8.90, 8.94 挿入ソート:6.91, 6.91 シェルソート:10.98, 11.01 ヒープソート:12.45, 12.44 この結果から処理速度が安定的な挿入ソートを標準としました。 並び替えの範囲が30を超える時はヒープソートが有効のようです。 ■更新履歴 ・2003/3/10  Ver1.00を公開 ・2003/3/20  Ver1.10「最大値検索」と「最小値検索」を追加 ・2003/3/22  Ver1.20「平均値算出」を追加      「最大値検索」「最小値検索」で最大値、最小値が同じ値で複数あった場合に      平等な確率で選出されるようにしました。 ・2003/6/22  Ver1.30「昇順(0を除外)」の代わりに「任意の数を後方移動」を収録      新たなソート法として挿入ソート、シェルソート、ヒープソートを追加 ・2003/8/1  Ver1.31 ヒープソートの処理を少しだけ高速化 ・2003/8/27  Ver1.32 平均値算出の処理を簡略化