我的问题与this one有关,但在我的情况下,我想获取一个包含n个应用程序的结果的列表,该应用程序的输出不能与先前的结果再次计算(从a中随机选择一个元素)列表)。
也就是说,函数n本身不是n次组成函数,而是将n个结果一起显示在列表中。
答案 0 :(得分:2)
像这样吗?
#!racket/base
(require srfi/1)
(define (times/list proc n)
(unfold-right zero? proc sub1 n))
(times/list (lambda (v) (abs (- v 5))) 10)
; ==> (4 3 2 1 0 1 2 3 4 5)
(times/list (lambda _ 5) 10)
; ==> (5 5 5 5 5 5 5 5 5 5)
(times/list (lambda _ (+ 1 (random 5))) 10)
; ==> (4 2 2 4 4 1 5 3 1 3) (varies)
答案 1 :(得分:1)
您可以像这样使用for/list
:
(define (times/list proc n)
(for/list ([i n]) (proc)))
使用它:
> (times/list (λ () (random 5)) 10)
'(3 4 3 3 0 0 4 0 2 1)