(require (lib "list.ss")) (define eventspace list) (define (size-of eventspace) (length eventspace)) ; assumes uniform eventspace (define (P event eventspace) (if (member event eventspace) (/ 1 (size-of eventspace)) 0)) (define (die-roll event) event) (define (expected-value rv eventspace) (foldr (lambda (e r) (+ (* (rv e) (P e eventspace)) r)) 0 eventspace)) (define (moment rv n eventspace) (expected-value (lambda (event) (expt (rv event) n)) eventspace)) (define (central-moment rv n eventspace) (let ((rv-expectation (expected-value rv eventspace))) (expected-value (lambda (e) (expt (- (rv e) rv-expectation) n)) eventspace))) (define (variance rv eventspace) (central-moment rv 2 eventspace)) (define (standard-deviation rv eventspace) (sqrt (variance rv eventspace)))