X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Frandom.lisp;h=373a3b2e5b3c203f15b06f27629aa79c5756c6a6;hb=37200d73dfca16507809778574092cfb998711d5;hp=0ca96f153f09eb3168982fd0aaeaefe580c29bb7;hpb=a530bbe337109d898d5b4a001fc8f1afa3b5dc39;p=sbcl.git diff --git a/src/code/random.lisp b/src/code/random.lisp index 0ca96f1..373a3b2 100644 --- a/src/code/random.lisp +++ b/src/code/random.lisp @@ -9,23 +9,21 @@ (in-package "SB!KERNEL") -(file-comment - "$Header$") - ;;; the size of the chunks returned by RANDOM-CHUNK -(defconstant random-chunk-length 32) +(def!constant random-chunk-length 32) ;;; the amount that we overlap chunks by when building a large integer ;;; to make up for the loss of randomness in the low bits -(defconstant random-integer-overlap 3) +(def!constant random-integer-overlap 3) ;;; extra bits of randomness that we generate before taking the value MOD the ;;; limit, to avoid loss of randomness near the limit -(defconstant random-integer-extra-bits 10) +(def!constant random-integer-extra-bits 10) ;;; the largest fixnum we can compute from one chunk of bits -(defconstant random-fixnum-max +(def!constant random-fixnum-max (1- (ash 1 (- random-chunk-length random-integer-extra-bits)))) -(sb!xc:defstruct (random-state (:constructor %make-random-state)) +(sb!xc:defstruct (random-state (:constructor %make-random-state) + (:copier nil)) ; since shallow copy is wrong (state (init-random-state) :type (simple-array (unsigned-byte 32) (627))))