我一直有一些麻煩,試圖定義一個函數,該函數生成範圍[0,y)內隨機整數長度x的列表。這裏是產生隨機整數列表的代碼:如何在Scheme中的範圍內生成唯一的整數列表。 (DrRacket)
(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,開始學生)
請不要編輯基礎上,人們張貼在回答你的問題的代碼。例如,當你根據Öscar的建議改變代碼時,「你應該檢查'list-length'是否爲零,而不是'長度',」你使他的答案的一部分不再有意義。如果你解決了人們發現和編輯問題的所有事情,那麼沒有任何答案是有道理的。我回滾了編輯。 –
哦,這很有趣,謝謝我沒有意識到這一點,並將在未來銘記在心。就在我最初發布代碼之後,我注意到我沒有爲輸入值使用非常好的名稱並對其進行了更改,但忘記將該名稱從長度更改爲特定行中的列表長度。 – Plopperzz