调用此函数可以模拟掷毂子和洗扑克牌 (defun randGetObj (alist / int int0 int1 second n item) (if (not (listp alist)) (progn (princ "\n参数类型错误!") (quit) ) ) (if (or (< (length alist) 2) (> (length alist) 60000)) (progn (princ "\n参数表中的元素太多或太少了") (quit) ) ) (setq int (length alist)) (setq int0 (fix (/ 60000 int)) int0 (* int0 int) int0 (1- int0) ) (setq second (read (menucmd "M=$(edtime,$(getvar,date),ss.MSEC)")) int1 (* second 1000) n 1 ) (while (and (< n 10) (< int0 int1)) (setq second (read (menucmd "M=$(edtime,$(getvar,date),ss.MSEC)")) int1 (* second 1000) n (1+ n) ) ) (if (= n 10) (setq int1 0) ) (setq item (fix (rem int1 int))) (nth item alist) ) |