我正在使用函数d
生成随机数,我将其收集在列表中,然后对它们进行平均:
(/ (apply #'+ (list (d 6) (d 6) (d 6) (d 6) (d 6) (d 6))) 6.0)
我想运行函数(d n)
i
次,将返回的值一起添加,然后除以i
。 dotimes
不会返回值。我将如何在Common Lisp中执行此操作?
答案 0 :(得分:8)
(defun r (n f arg)
"Calls the function F N times with ARG. Returns
the arithmetic mean of the results."
(/ (loop repeat n sum (funcall f arg))
n))
(r 6 #'d 6)
dotimes不会返回值。
它确实:
CL-USER 21 > (let ((sum 0))
(dotimes (i 10 sum) ; <- sum is the return value
(incf sum (random 10))))
45
答案 1 :(得分:3)
IRC非常善良的灵魂给了我这个解决方案:
(loop repeat 6 collect (d 6))