[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(DTPtechNote:677) Re: listのシャッフル
>この場合だと、some itemを使うアルゴリズムじゃないんですよね。
some item of はこんな感じにすれば使えますよね。
で、random numberより僅かに速いです。
2000項目くらいないとthe ticksでも、誤差かな? と思う程度
の差しかわかりませんが……。
その程度の差の為に回りくどくなるsome item of を使うほどの
メリットはなさそうだ。
といったところのようです。
to list_shuffle_some(my_list)
copy my_list to tmp_list
set si to {}
repeat with j from 1 to count my_list
set end of si to j
end repeat
repeat with i from 2 to length of tmp_list
set rand_num to (some item of items 1 thru i of si)
set temp_item to item i of tmp_list
set item i of tmp_list to item rand_num of tmp_list
set item rand_num of tmp_list to temp_item
end repeat
if my_list is tmp_list then --偶然変化がなかった
my list_Shuffle(my_list)
else
return tmp_list
end if
end list_shuffle_some