変数値ランダム並び替え
たとえば、変数101,102,103,……,110に1,2,3……,10が代入されているとして、
その数値を5,4,9,……,3の様にランダムに並び替える、というようなものです。
使う変数は五つです(並び替える変数は除きます)。
l:並び替える数字の数
m:並び替える変数の一番最後の番号
X:移動する変数の番号
Y:移動する数字
Z:移動する変数の次の番号
この五つの変数が並び替える変数の中に入らないようにしてください(一応)。
なお、並び替える変数にはすでに値が入っているものとします。
◆変数の操作:[l:並び替える数字の数]代入, 10
◆変数の操作:[m:並び替える変数の一番最後の番号]代入, 110
◆繰り返し処理
◆変数の操作:[X:移動する変数の番号]代入, 乱数[0〜999999]
◆変数の操作:[X:移動する変数の番号]剰余, 変数[l:並び替える数字の数]の値
◆変数の操作:[X:移動する変数の番号]加算, 変数[m:並び替える変数の一番最後の番号]の値
◆変数の操作:[X:移動する変数の番号]減算, 変数[l:並び替える数字の数]の値
◆変数の操作:[X:移動する変数の番号]加算, 1
◆変数の操作:[Y:移動する数字]代入, 変数[V[X:移動する変数の番号]]の値
◆変数の操作:[Z:移動する変数の次の番号]代入,変数[X:移動する変数の番号]の値
◆繰り返し処理
◆条件分岐:変数[X:移動する変数の番号]がV[m:並び替える変数の一番最後の番号]
◆繰り返し処理の中断
◆
:分岐終了
◆変数の操作:[Z:移動する変数の次の番号]加算, 1
◆変数の操作:[V[X:移動する変数の番号]]代入, 変数[V[Z:移動する変数の次の番号]]の値
◆変数の操作:[X:移動する変数の番号]加算, 1
◆
:以上繰り返し
◆変数の操作:[V[X:移動する変数の番号]]代入, 変数[Y:移動する数字]の値
◆変数の操作:[l:並び替える数字の数]減算, 1
◆変数の操作:[m:並び替える変数の一番最後の番号]減算,1
◆条件分岐:変数[l:並び替える数字の数]が0
◆繰り返し処理の中断
◆
:分岐終了
◆
:以上繰り返し
解説
まず、変数Xに乱数を代入し、変数lで剰余すると、0〜9までの乱数がでます。
これに、並び替える変数の一番最初の番号を足したのが、取り出す変数です。
変数Xの番号の変数の値を変数Yに代入しておき、変数Xの番号の変数があくので、
変数Xの番号の変数以降の変数を詰めていきます。↓の部分です。
◆繰り返し処理
◆条件分岐:変数[X:移動する変数の番号]がV[m:並び替える変数の一番最後の番号]
◆繰り返し処理の中断
◆
:分岐終了
◆変数の操作:[Z:移動する変数の次の番号]加算, 1
◆変数の操作:[V[X:移動する変数の番号]]代入, 変数[V[Z:移動する変数の次の番号]]の値
◆変数の操作:[X:移動する変数の番号]加算, 1
◆
:以上繰り返し
そのあと、変数l,mから1引きます。
そしたら、最初に戻って、変数Xに乱数を代入し、変数lで剰余するのですが、
変数lから1引いているので、変数Xの値は、0〜8までの乱数になります。
以下同様にしていき、変数lが0になったところで終了です。
イメージ的には、達磨落としで適当な段を抜き取ってわきに積み重ねていくような感じです。