diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2014-03-14 00:26:37 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2014-03-14 00:26:37 -0700 |
commit | 62ec2d2ec9d427866c9dea6fc507ea1c7976fb0f (patch) | |
tree | 1a964b4a1c99a8d1c170655c2e9fb7bbc9b51e98 /txr.1 | |
parent | 9753507cc7c47f080606ba86b280a7d6a2b212be (diff) | |
download | txr-62ec2d2ec9d427866c9dea6fc507ea1c7976fb0f.tar.gz txr-62ec2d2ec9d427866c9dea6fc507ea1c7976fb0f.tar.bz2 txr-62ec2d2ec9d427866c9dea6fc507ea1c7976fb0f.zip |
* eval.c (eval_init): Make seed argument optional in make-random-state.
* rand.c (make_random_state): Do argument defaulting on seed.
Also, mix getpid() into the seed.
(random_fixnum): Bugfix: do proper defaulting on optional
agument, rather than relying on nil.
(random): Fix 2014-02-05 regression. This was totally broken,
ignoring the random state passed in and using the global
random state. This function must only use the state passed in;
there is no defaulting to the global random state.
* txr.1: Documenting that seed is optional in make-random-state.
Describing what guarantees can be expected with regard to
calls made close together temporally.
Diffstat (limited to 'txr.1')
-rw-r--r-- | txr.1 | 27 |
1 files changed, 24 insertions, 3 deletions
@@ -12546,7 +12546,7 @@ the call (make-random-state 42). .TP Syntax: - (make-random-state <seed>) + (make-random-state [<seed>]) .TP Description: @@ -12554,11 +12554,32 @@ Description: The make-random-state function creates and returns a new random state, an object of the same kind as what is stored in the *random-state* variable. -The seed must be an integer value. +The seed, if specified, must be an integer value. -Note that the sign of the value is ignored, so that negative seed +Note that the sign of the seed is ignored, so that negative seed values are equivalent to their additive inverses. +If the seed is not specified, then make-random-state produces a seed based +on some information in the process environment, such as current +time of day. It is not guaranteed that two calls to (make-random-state nil) +that are separated by less than some minimum increment of real time produce +different seeds. The minimum time increment depends on the platform, but on any +given platform, it is the platform's smallest available time increment, or a +microsecond, whichever is longer. + +Of course, it is not guranteed that any two calls to make-random-state produce +different values under any circumstances, due to possible collisions; however, +time differences smaller than the minimum increment may predictably produce +identical values. + +For instance, on a platform with a nanosecond-resolution real-time clock, +the minimum time increment is a microsecond. Calls to make-random-state +closer together than a microsecond may predictably produce the same seed. + +In a platform with a millisecond-resolution real-time clock, the minimum +time increment is a millisecond. Calls to make-random-state less than +a millisecond apart may predictably produce the same seed. + .SS Function random-state-p .TP |