多次元配列の要素をランダムに抽出する - lisp-cookbook-ja/common-lisp GitHub Wiki

配列

多次元配列の要素をランダムに抽出する

多次元配列であってもrow-major-aref を使うことで一次元配列のように扱うことが可能ですので、あとは randomarray-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")

参考