2016-11-16 43 views
0

我知道关于球拍中随机功能的基本知识,但我正在尝试做更难的事情。球拍中的随机功能(更复杂)

我想开发一个随机函数,它给出了函数作为参数的随机列表元素。例如:

‘(a h j l u) -> Output: h 

‘(w t) -> Output: w 

‘(l u t n) -> Output: t 

任何帮助,欢迎。

回答

1

这里有一个选项,假设一个非空列表,使用内置的程序:

(define (pick-random lst) 
    (first (shuffle lst))) 

例如:

(pick-random '(1 2 3 4 5)) 
=> 3 
1

一种方法是首先得到列表的长度,做(random len)得到一个数字[0,len-1]并使用list-ref来获取元素。