* xyzzy lisp : シャッフル
(defun nswap (l x y) (rotatef (car (nthcdr x l)) (car (nthcdr y l))) l) (defun nshuffle (l) (do ((i (length l) (1- i))) ((>= 1 i)) (setq l (nswap l (1- i) (random i)))) l)元のデータを直接いじっていくほうが分かりやすくないッスか?
ってことでこんな。
nswapは関数にする必要は無いけど意味が分かりやすいように。
update : 2007-04-12 (Thu) 05:46:48