[chuck-users] Non-random random number

Spencer Salazar spencer at ccrma.stanford.edu
Wed Oct 9 20:45:33 EDT 2013


Thanks for letting us know about this. After some investigation, it looks
like a bug in the underlying C functions rand()/srand(), which are widely
regarded to be pretty bad like this. Each of those STK ugens re-seeds
rand() with the current time in seconds, via srand(), when the ugen is
created. Evidently the first value out of rand() after this reseeding is
not very random at all, and would explain what is happening here.

ChucK could probably do a better job working around those limitations, but
new code should definitely use Math.random() and related functions.

spencer


On Wed, Oct 9, 2013 at 4:37 PM, David Loberg Code
<d.loberg.code at wmich.edu>wrote:

> 'Noise' object does not interfere.
> 'SubNoise'  does.
>
> david
>
>
> All of those instruments contain noise.  Likely a Noise object.  Wonder if Noise itself does a seed?  I'll check.
>
> Sent from my iPhone
>
>
>
>
>
> On Oct 9, 2013, at 4:40 PM, David Code <d.loberg.code at wmich.edu> wrote:
>
> Apparently, the non-random bug does not happen after declaration of all
> STK instruments, just some of them:
> BlowBotl, BlowHole, Clarinet, Flute, Saxofony, StifKarp, VoicForm
>
> And the problem occurs with both Std.rand2 and Std.rand2f
> (I haven't conducted any more tests yet to see under what other conditions
> it might happen.)
>
>
> david
>
>
> Forgive me if this was already discussed on the list before.  I am puzzled about a non-random random number.
> When the random number is calculated right after an STK instrument is declared, the result is not random.  It is the same number every time.
> However, if the same code occurs without an STK declaration before it, the result is random.
>
>
> while (true)
> {
> StifKarp stu => dac;
> int randy;
> Std.rand2(0,10) => randy;
> <<<"here are three random numbers",
> Std.rand2(0,10), Std.rand2(0,10),Std.rand2(0,10),
> "and NON-random Randy", randy >>>;
>
> Std.rand2(0,10) => randy;
> <<<"here are three more random numbers",
> Std.rand2(0,10), Std.rand2(0,10),Std.rand2(0,10),
> "and random Randy", randy >>>;
> 1000::ms => now;
> }
>
>
> david
>
> David Loberg Code
> School of Music
> Western Michigan University
> 1903 W Michigan Ave
> Kalamazoo, MI 49008-5434code at wmich.edu <https://lists.cs.princeton.edu/mailman/listinfo/chuck-users>
>
>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>
>
>
>
>
>
>
>
>
> *From: *David Code <d.loberg.code at wmich.edu>
> *Subject: **Re: [chuck-users] Non-random random number*
> *Date: *October 9, 2013 6:37:13 PM EDT
> *To: *chuck-users at lists.cs.princeton.edu
> *Reply-To: *ChucK Users Mailing List <chuck-users at lists.cs.princeton.edu>
>
>
> Upon a quick check it appears that Math.random is fine.
> I guess I just need to retro-fit my older ChucK files.
>
> david
>
> Does it do it with Math.random too?
>
> -Jeff
>
>
> --
> Jeffrey Albert, Ph.D.
> Assistant Professor of Music Industry Technology
> Loyola University New Orleans
> College of Music and Fine Arts
> 6363 St. Charles Ave.
> Campus Box 8
> New Orleans, LA 70118
>
> Office: Communications/Music Complex 428P
> Office Phone: (504) 865-2606
> Voice & Text: (504) 315-5167jvalbert at loyno.edu <https://lists.cs.princeton.edu/mailman/listinfo/chuck-users>http://www.loyno.edu/~jvalbert
>
>
> On Oct 9, 2013, at 4:40 PM, David Code <d.loberg.code at wmich.edu <https://lists.cs.princeton.edu/mailman/listinfo/chuck-users>> wrote:
>
> >* Apparently, the non-random bug does not happen after declaration of all STK instruments, just some of them:*>* BlowBotl, BlowHole, Clarinet, Flute, Saxofony, StifKarp, VoicForm*>* *>* And the problem occurs with both Std.rand2 and Std.rand2f*>* (I haven't conducted any more tests yet to see under what other conditions it might happen.)*>* *>* *>* david*>* *
>
>
>
> On Oct 9, 2013, at 5:40 PM, David Code wrote:
>
> Apparently, the non-random bug does not happen after declaration of all
> STK instruments, just some of them:
> BlowBotl, BlowHole, Clarinet, Flute, Saxofony, StifKarp, VoicForm
>
> And the problem occurs with both Std.rand2 and Std.rand2f
> (I haven't conducted any more tests yet to see under what other conditions
> it might happen.)
>
>
> david
>
>
> Forgive me if this was already discussed on the list before.  I am puzzled about a non-random random number.
> When the random number is calculated right after an STK instrument is declared, the result is not random.  It is the same number every time.
> However, if the same code occurs without an STK declaration before it, the result is random.
>
>
> while (true)
> {
> StifKarp stu => dac;
> int randy;
> Std.rand2(0,10) => randy;
> <<<"here are three random numbers",
> Std.rand2(0,10), Std.rand2(0,10),Std.rand2(0,10),
> "and NON-random Randy", randy >>>;
>
> Std.rand2(0,10) => randy;
> <<<"here are three more random numbers",
> Std.rand2(0,10), Std.rand2(0,10),Std.rand2(0,10),
> "and random Randy", randy >>>;
> 1000::ms => now;
> }
>
>
> david
>
> David Loberg Code
> School of Music
> Western Michigan University
> 1903 W Michigan Ave
> Kalamazoo, MI 49008-5434code at wmich.edu <https://lists.cs.princeton.edu/mailman/listinfo/chuck-users>
>
>
>
>
>
>
>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>
>
>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20131009/0569fabc/attachment.htm>


More information about the chuck-users mailing list