Date: Thu, 03 Oct 1996 14:00:32 -0700 From: Josh MacDonald <jmacd@CS.Berkeley.EDU> To: Bruce Evans <bde@zeta.org.au> Cc: freebsd-hackers@freebsd.org Subject: Re: rand() and random() Message-ID: <199610032100.OAA07079@paris.CS.Berkeley.EDU> In-Reply-To: Your message of "Fri, 04 Oct 1996 01:38:16 %2B1000." <199610031538.BAA19908@godzilla.zeta.org.au>
next in thread | previous in thread | raw e-mail | index | archive | help
> >> Because it is ANSI conrfmant (man rand).
> >
> >That doesn't mean it would be impossible to do
> >
> >int
> >rand(void)
> >{
> > return (int)random();
> >}
>
> It would have to use a copy of random() so that the functions don't
> mess up each other's state.
>
> >The wrapping is needed since one function is declared to return int,
> >while the other returns long. Other than this, both have the same
> >range for the result (RAND_MAX actually is (2**32)-1), so i fail to
> >see why random() should _not_ match the ANSI requirements.
>
> The example implementation of rand() in ANSI is said to be bad. The
> BSD implementation is much worse because it only throws away one high
> bit instead of 17. We had a discussion a year or two ago about
> random() being bad too because srandom() uses essentially rand() to
> initialize things.
>
> >I vote for killing the old rand(). Too many things (in particular,
> >games) behave very stupid with it.
>
> Are they better with rand() replaced by (rand() % 0x7fff)?
The reason I originally sent this mail is that I had been showing the
Gimp authors something with their new version dated yesterday, I clicked
on the "about dialog", which has a randomly disolved-in image. Well, the
image materializes not randomly, but like vertical blinds gradually closing,
because the rand() function is so terrible. Also a few of their plug-ins
use rand() (because rand() is available everywhere, while random() isn't),
and display extremeley terrible effects, (for example, layer-dissolve,
which is supposed to be completely random, makes a bunch of stripes through
an image).
Having a bad rand() function is killing the "portability" of these
applications. This gave them fuel in their ongoing battle to convince
me to start running Linux.
-josh
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199610032100.OAA07079>
