2006/03/09(Thu) 21:49:16 編集(投稿者)
2006/03/09(Thu) 21:33:29 編集(投稿者)
以下のようなアルゴリズムを作成してみました。参考になれば幸いです。
----
プロローグ:
# 数列変数
local v
# 最小値と最大値と差分値
local index_min = 0
local index_max = 40
local step = 1
# 要素数
local n = (index_max - index_min) \ step
# 数列を作成
local i
for i = 0 to n
v[i] = i * step + index_min
next
ask v "シャッフル前"
# ランダムシャッフル
local temp x
local formed_n = n + 1
for i = 0 to n
# 全ての要素を、任意の他の要素と交換
x = Random(formed_n) - 1
if x != i then
temp = v[i]
v[i] = v[x]
v[x] = temp
endif
next
ask v "シャッフル後"
quit