[yoshimi] Re: More Random thoughts

  • From: Kristian Amlie <kristian@xxxxxxxxxx>
  • To: yoshimi@xxxxxxxxxxxxx, Will Godfrey <willgodfrey@xxxxxxxxxxxxxxx>
  • Date: Thu, 29 Nov 2018 09:24:16 +0100

On 29/11/2018 00:42, Will Godfrey wrote:

For some time now I've been unhappy with the way we handle random numbers. The
whole thing was a dogs breakfast of adjustments and patches - well rather less
so now :)

By using the Linux random_r() function, we lost portability and the patch for
BSD created a potential problem for multiple instances, so I started a search
for one that was truly portable and able to be built into Yoshimi. It doesn't
seem that anyone else tried to do this, as I quite quickly found the Bob 
Jenkins
"A Small Noncryptographic PRNG" which he apparently publicised in 2007.

If you want to know more, and how well respected this is look here:
http://www.pcg-random.org/posts/bob-jenkins-small-prng-passes-practrand.html

So apart from portability, what do we get?

Well for a start, even unoptimised it's faster than the Linux built-in one.

It's really rather small.

You can pull 128 *TERABYTES* of numbers from it before it repeats. Even in my
test routine (with nothing else happening) that would take over an hour, so I
felt justified in significantly reducing the number of times it was re-seeded.
This in itself seems to have made a very tiny reduction in note-on time.

Great! I really think this sounds like the right tool for the job!
Everything except the initial seeding done in-process, so less context
switching.

-- 
Kristian
Yoshimi source code is available from either: 
https://sourceforge.net/projects/yoshimi
Or: https://github.com/Yoshimi/yoshimi
Our list archive is at: https://www.freelists.org/archive/yoshimi
To post, email to yoshimi@xxxxxxxxxxxxx

Other related posts: