[TUHS] early unix rand

ron minnich rminnich at gmail.com
Wed Mar 13 11:09:41 AEST 2024


There used to be an urban legend about multiply overflow and the PDP 11.

This would’ve been circa 1976. Someone from DEC told us that on a multiply
overflow, the contents of the destination register would be “kind of”
random. I was never able to verify that claim. But that might explain this
code.

On Tue, Mar 12, 2024 at 16:05 Jonathan Gray <jsg at jsg.id.au> wrote:

> 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
> <https://www.tuhs.org/cgi-bin/utree.pl?file=V5/usr/source/s3/rand.sDistributions/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 part --------------
An HTML attachment was scrubbed...
URL: <http://www.tuhs.org/pipermail/tuhs/attachments/20240312/62e2ef30/attachment.htm>


More information about the TUHS mailing list