root/trunk/random/bernoulli.lisp

Revision 26, 1.3 kB (checked in by lhealy, 9 months ago)

Subversion version stamp.

  • Property svn:keywords set to Id
Line 
1;; Bernoulli distribution
2;; Liam Healy, Sat Nov 25 2006 - 16:59
3;; Time-stamp: <2008-02-17 13:39:15EST bernoulli.lisp>
4;; $Id$
5
6(in-package :gsl)
7
8(defmfun bernoulli (generator p)
9  "gsl_ran_bernoulli"
10  (((generator generator) :pointer) (p :double))
11  :c-return :uint
12  :documentation                        ; FDL
13  "Returns either 0 or 1, the result of a Bernoulli trial
14   with probability p.  The probability distribution for
15   a Bernoulli trial is
16   p(0) = 1 - p
17   p(1) = p.")
18
19(defmfun bernoulli-pdf (k p)
20  "gsl_ran_bernoulli_pdf" ((k :uint) (p :double))
21  :c-return :double
22  :documentation                        ; FDL
23  "The probability p(k) of obtaining
24  k from a Bernoulli distribution with probability parameter
25  p, using the formula given in #'bernoulli.")
26
27;;; Examples and unit test
28#|
29(make-tests bernoulli
30  (letm ((rng (random-number-generator *mt19937* 0)))
31     (loop for i from 0 to 10
32           collect
33           (bernoulli rng 0.5d0)))
34  (bernoulli-pdf 0 0.5d0))
35|#
36
37(LISP-UNIT:DEFINE-TEST BERNOULLI
38  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
39   (LIST (LIST 0 1 1 0 1 1 0 0 0 0 0))
40   (MULTIPLE-VALUE-LIST
41    (LETM ((RNG (RANDOM-NUMBER-GENERATOR *MT19937* 0)))
42      (LOOP FOR I FROM 0 TO 10 COLLECT
43            (BERNOULLI RNG 0.5d0)))))
44  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
45   (LIST 0.5d0)
46   (MULTIPLE-VALUE-LIST (BERNOULLI-PDF 0 0.5d0))))
47
Note: See TracBrowser for help on using the browser.