From: Jonathan Gray <jsg@jsg.id.au>
To: Russ Cox <rsc@swtch.com>
Cc: tuhs@tuhs.org
Subject: [TUHS] Re: early unix rand
Date: Wed, 13 Mar 2024 10:05:20 +1100 [thread overview]
Message-ID: <ZfDfsMGhI-g4jql-@largo.jsg.id.au> (raw)
In-Reply-To: <CADSkJJWc_dVMvN+HijKGWwKVTppzMGF_m9mfW4yRxE_6AnhF4g@mail.gmail.com>
On Tue, Mar 12, 2024 at 08:55:02AM -0400, Russ Cox wrote:
> Hi all (and TUHS),
>
> The Third Edition rand(III) page [1] ends with
>
> WARNING The author of this routine has been writing
> random-number generators for many years and has
> never been known to write one that worked.
>
> My understanding is that Ken wrote the rand implementation.
> But I'm curious about the origin of this warning.
> I had assumed that Ken wrote it as a combination warning+joke,
> but Rob suggested that to him it didn't sound like Ken and
> perhaps Doug or Dennis had written it. Does anyone remember?
>
> Separately, I am trying to find out what the very first
> Unix rand implementation was. In the TUHS archives,
> the incomplete V2 sources contain a reference to srand
> in cmd/bas0.s [2], but there is no definition in the tree.
> The V3 man pages list it, but as far as I can tell full
> library sources do not appear in the TUHS archives
> until the V6 snapshot. The V6 rand [3] is:
>
> rand:
> mov r1,-(sp)
> mov ranx,r1
> mpy $13077.,r1
> add $6925.,r1
> mov r1,r0
> mov r0,ranx
> bic $100000,r0
> mov (sp)+,r1
> rts pc
matches V5:
https://www.tuhs.org/cgi-bin/utree.pl?file=V5/usr/source/s3/rand.s
Distributions/Research/Dennis_v5/v5root.tar.gz
>
> Perhaps this is the original rand as well? It is hard to imagine
> a much simpler one, other than perhaps removing the addition,
> but doing so would create a sequence of only odd numbers.
> >From the man page description it sounds like this has to be the
> original generator, perhaps with different constants.
>
> Thanks!
>
> Best,
> Russ
>
> [1]
> https://github.com/dspinellis/unix-history-repo/blob/Research-V3/man/man3/rand.3
> [2]
> https://github.com/dspinellis/unix-history-repo/blob/Research-V2/cmd/bas0.s
> [3]
> https://github.com/dspinellis/unix-history-repo/blob/Research-V6/usr/source/s3/rand.s
next prev parent reply other threads:[~2024-03-12 23:05 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-12 12:55 [TUHS] " Russ Cox
2024-03-12 18:08 ` [TUHS] " Russ Cox
2024-03-12 23:05 ` Jonathan Gray [this message]
2024-03-13 1:09 ` ron minnich
2024-03-13 16:41 ` ron minnich
2024-03-13 17:17 ` ron minnich
2024-03-13 20:25 ` Rob Pike
2024-03-13 20:34 ` Clem Cole
2024-03-14 19:24 ` Dave Horsfall
2024-03-12 14:37 [TUHS] " Douglas McIlroy
2024-03-12 16:23 ` [TUHS] " Paul Winalski
2024-03-13 1:22 ` Russ Cox
2024-03-12 16:32 ` Ken Thompson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZfDfsMGhI-g4jql-@largo.jsg.id.au \
--to=jsg@jsg.id.au \
--cc=rsc@swtch.com \
--cc=tuhs@tuhs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).