我在尝试定义一个函数时遇到了一些麻烦,该函数生成一个长度为 x 的列表,该列表由 [0, y) 范围内的随机整数组成。这是生成随机整数列表的代码:
(define (random-list range list-length)
(cond
[(zero? length) empty]
[else (cons (random range) (random-list range (sub1 list-length)))]))
问题在于,如果我尝试将此代码转换为使用递归生成从 0 到(范围 - 1)长度(列表长度)的唯一随机整数列表的代码。我似乎无法找到一种方法来检查生成的随机数是否已经在正在创建的列表中。此代码永远运行:
(define (random-list range list-length)
(cond
[(zero? list-length) empty]
[else
(cond
[(member? (random range) (random-list range list-length))
(random-list range list-length)]
[else
(random-list range (sub1 list-length))])]))
有任何想法吗?(我正在使用 DrRacket,初级学生)