~ubuntu-branches/ubuntu/quantal/gclcvs/quantal

« back to all changes in this revision

Viewing changes to ansi-tests/random.lsp

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2004-06-24 15:13:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040624151346-xh0xaaktyyp7aorc
Tags: 2.7.0-26
C_GC_OFFSET is 2 on m68k-linux

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
;-*- Mode:     Lisp -*-
 
2
;;;; Author:   Paul Dietz
 
3
;;;; Created:  Sat Sep  6 15:47:42 2003
 
4
;;;; Contains: Tests of RANDOM
 
5
 
 
6
(in-package :cl-test)
 
7
 
 
8
(compile-and-load "numbers-aux.lsp")
 
9
(compile-and-load "random-aux.lsp")
 
10
 
 
11
(deftest random.error.1
 
12
  (signals-error (random) program-error)
 
13
  t)
 
14
 
 
15
(deftest random.error.2
 
16
  (signals-error (random 10 *random-state* nil) program-error)
 
17
  t)
 
18
 
 
19
(deftest random.error.3
 
20
  (loop for x in *mini-universe*
 
21
        unless (or (and (realp x) (> x 0))
 
22
                   (eval `(signals-error (random ',x) type-error)))
 
23
        collect x)
 
24
  nil)
 
25
 
 
26
(deftest random.1
 
27
  (loop for i from 2 to 30
 
28
        for n = (ash 1 i)
 
29
        nconc
 
30
        (loop for j = (1+ (random n))
 
31
              repeat 20
 
32
              nconc
 
33
              (loop for r = (random j)
 
34
                    repeat i
 
35
                    unless (and (integerp r)
 
36
                                (<= 0 r)
 
37
                                (< r j))
 
38
                    collect (list j r))))
 
39
  nil)
 
40
 
 
41
 
 
42
(deftest random.2
 
43
  (loop for i from 2 to 20
 
44
        for n = (ash 1 i)
 
45
        nconc
 
46
        (loop for j = (random (float n))
 
47
              repeat 20
 
48
              unless (zerop j)
 
49
              nconc
 
50
              (loop for r = (random j)
 
51
                    repeat 20
 
52
                    unless (and (eql (float r j) r)
 
53
                                (<= 0 r)
 
54
                                (< r j))
 
55
                    collect (list j r))))
 
56
  nil)
 
57
 
 
58
(deftest random.3
 
59
  (binomial-distribution-test 10000
 
60
                              #'(lambda () (eql (random 2) 0)))
 
61
  t)
 
62
 
 
63
(deftest random.4
 
64
  (binomial-distribution-test 10000
 
65
                              #'(lambda () (< (random 1.0s0) 0.5s0)))
 
66
  t)
 
67
 
 
68
(deftest random.5
 
69
  (binomial-distribution-test 10000
 
70
                              #'(lambda () (< (random 1.0d0) 0.5d0)))
 
71
  t)
 
72
 
 
73
(deftest random.6
 
74
  (binomial-distribution-test 10000
 
75
                              #'(lambda () (evenp (random 1024))))
 
76
  t)
 
77
 
 
78
(deftest random.7
 
79
  (loop for x in '(10.0s0 20.0f0 30.0d0 40.0l0)
 
80
        for r = (random x)
 
81
        unless (eql (float r x) r)
 
82
        collect (list x r))
 
83
  nil)
 
84
 
 
85
;;; Do more statistical tests here
 
86
 
 
87
        
 
 
b'\\ No newline at end of file'