docs/54879: man 1 jot, -r description
David Brinegar
manjot.3.brinegar at spamgourmet.com
Sat Jul 26 06:30:11 UTC 2003
>Number: 54879
>Category: docs
>Synopsis: man 1 jot, -r description
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-doc
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: doc-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Jul 25 23:30:09 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: David Brinegar
>Release: FreeBSD 4.6-RELEASE i386
>Organization:
>Environment:
Any Freebsd machine.
>Description:
Two inaccurate statements and missing information about defaults.
"Random numbers are obtained through random(3)."
is no longer true.
"while 20 random 8-letter strings are produced with
jot -r -c 160 a z | rs -g 0 8"
cannot produce the letter z.
And there is no mention of the default -w %.0f format which creates
an unexpected distribution due to rounding.
>How-To-Repeat:
man 1 jot
To see the affect of rounding:
> jot -r 1000 1 4 | sort -n | uniq -c
169 1 <= top and bottom are half as likely as the others
344 2
319 3
168 4 <=
Internally, jot is assigning random floating point values like so:
[1.0, 1.5) => 1
[1.5, 2.5] => 2
(2.5, 3.5) => 3
[3.5, 4.0) => 4
which just follows from the way printf rounds "%.0f".
> jot -w %d -r 1000 1 4 | sort -n | uniq -c
335 1 <= uniform distribution, but no 4
338 2
327 3
Here internally jot is flooring the same floating point values
instead of rounding them.
>Fix:
"Random numbers are obtained through arc4random(3)."
"while 20 random 8-letter strings are produced with
jot -r -c 160 a { | rs -g 0 8
Note: { comes after z (see man 7 ascii.)
Note: jot -r -c 0 a z cannot produce a z character.
And some hint about the default -w format and how "%.0f" skews the
distribution would be useful.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-doc
mailing list