[PD-dev] Random method in noise~ question....

Chris McCormick chris at mccormick.cx
Mon Oct 25 13:46:42 CEST 2004


Also cool and very light is the mersenne twister.
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html

Chris.

On Mon, Oct 25, 2004 at 12:03:45PM +0100, chun lee wrote:
> Hi miller:
> 
> Thanks for your reply, I found the links below in implementing the minimal
> standard/Lehmer RNG.
> 
> 
> http://www.sbc.su.se/~per/crng/seminar/rng5.html
> http://www.cs.virginia.edu/~jcc5t/classes/undergrad/simulation/random/rng.c
> 
> In addition, what is the period of the homebrew method? Also, are the large
> numbers 435898247, 382842987 specifically chosen or they works as long as
> they a sufficiently large?
> 
> Cheers
> 
> CHUN
> 
> On 25/10/04 5:00 am, "Miller Puckette" <mpuckett at man104-1.ucsd.edu> wrote:
> 
> > Hi Chun,
> > 
> > It's a simple, homebrew pseudo-random number generator.  I'm not
> > sure where you can find the theory of pseudorandom number generators,
> > but basically the val = val * 435898247 + 382842987 step mixes up
> > the set of odd 32-bit integers in a very complicated way.
> > 
> > cheers
> > Miller
> > 
> > On Fri, Oct 22, 2004 at 12:28:11AM +0100, chun lee wrote:
> >> Hi there:
> >> 
> >> Out of curiosity, I thought I will take a look at how [noise~] is
> >> implemented. While knowing just enough C to write little externals, I am a
> >> bit puzzled at the method in which the random number is obtained in here as
> >> I only know of rand() method in ANSI C. I also looked at the code for
> >> [random] and they look similar. Homebrew?
> >> 
> >> I wonder if anyone could provide some comments on the code or explain a
> >> little so that I can know how it works.
> >> 
> >> static t_int *noise_perform(t_int *w)
> >> {
> >>     t_float *out = (t_float *)(w[1]);
> >>     int *vp = (int *)(w[2]);
> >>     int n = (int)(w[3]);
> >>     int val = *vp;
> >>     while (n--)
> >>     {
> >>         *out++ = ((float)((val & 0x7fffffff) - 0x40000000)) *
> >>             (float)(1.0 / 0x40000000);
> >>         val = val * 435898247 + 382842987;
> >>     }
> >>     *vp = val;
> >>     return (w+4);
> >> }
> >> 
> >> 
> >> Many thanks
> >> 
> >> Yours
> >> 
> >> CHUN
> >> 
> >> 
> >> _______________________________________________
> >> PD-dev mailing list
> >> PD-dev at iem.at
> >> http://iem.at/cgi-bin/mailman/listinfo/pd-dev
> 
> 
> _______________________________________________
> PD-dev mailing list
> PD-dev at iem.at
> http://iem.at/cgi-bin/mailman/listinfo/pd-dev
-------------------
chris at mccormick.cx
http://mccormick.cx




More information about the Pd-dev mailing list