n人中m人が当選するくじ
Posted feedbacks - Scheme
Scheme (Gauche) で。素直に。 実行例: gosh> (pick 100 4) (12 17 72 45) gosh> (pick 100 7) (30 68 74 27 58 41 7)
1 2 3 4 5 6 7 8 9 10 | (use srfi-1)
(use srfi-27)
(random-source-randomize! default-random-source)
(define (pick n m)
(let loop ((lis (iota n)) (m m) (r '()))
(cond ((zero? m) r)
((null? lis) (error "pool too small"))
(else (let1 picked (list-ref lis (random-integer (length lis)))
(loop (delete picked lis =) (- m 1) (cons picked r)))))))
|


にしお
#3360()
Rating0/0=0.00
[ reply ]