多次元配列の要素をランダムに抽出する - lisp-cookbook-ja/common-lisp GitHub Wiki
多次元配列の要素をランダムに抽出する
多次元配列であってもrow-major-aref を使うことで一次元配列のように扱うことが可能ですので、あとは random と array-total-size を組み合わせることで実現できます。
(defvar *foods*
#2A(("apple" "pine" "banana" "orange")
("carrot" "broccoli" "celery" "lettuce")
("coffee" "tea" "wine" "beer")))
(loop :repeat 10 :collect (row-major-aref *foods* (random (array-total-size *foods*))))
;=> ("pine" "apple" "pine" "wine" "beer" "lettuce" "apple" "wine" "celery" "tea")