EPrime - motion stim issues

David McFarlane mcfarla9 at msu.edu
Fri Aug 26 15:40:35 UTC 2011


OK, I posted the article at 
http://groups.google.com/group/e-prime/browse_thread/thread/5b7862e01f738dfc 
.  (Also, I should have mentioned in my earlier post here that, 
besides PRNG including a GetSeed method lacking from standard VBA, 
PRNG lacks a simple equivalent to the standard set's "Randomize" with 
no argument.)

-- David McFarlane, Professional Faultfinder


At 8/26/2011 10:41 AM Friday, David McFarlane wrote:
>Paul,
>
>Thanks for checking on the equivalence between PRNG and Randomize, 
>etc., and posting a very nice test.  I had wondered about that 
>myself, and some time ago ran extensive tests to convince myself 
>that they all use the same underlying generator.  Perhaps it is time 
>that I posted that as part of my "Mastering E-Prime" series.  In 
>short, I concluded that PRNG just gathers into one E-Object all of 
>the functions of the standard VBA randomization functions, and that 
>PRNG includes a GetSeed method lacking from standard VBA.  Beyond 
>that, which you use comes down to matter of personal programming 
>taste or style.  I like keeping all those functions neatly organized 
>under one object, but I always comment that in my source code.
>
>But of course no one should take my word for anything, so it is good 
>to have someone else verify this.
>
>Best,
>-- David McFarlane, Professional Faultfinder
>
>
>At 8/25/2011 07:17 PM Thursday, Paul Groot wrote:
>>Hi David,
>>
>>That is indeed what happens when using the random function. (I was
>>just trying to talk myself out of a silly typo ;-)
>>
>>A deeper understanding of the problem often raises new questions...
>>Purely academic off course!
>>I just realized that the EPrime (1.2) documentation mentions two types
>>of random generators: The standard visual basic functions (random,
>>randomize) and the E-Basic specific PRNG object. This might be
>>important if you use the seed value to setup your experiment to a
>>known state (for reproducibility and testing). The edat output file
>>logs a single seed value retrieved with PRNG.GetSeed(), so it would be
>>interesting to know if there is only one active PRNG under the hood. A
>>simple test shows that this is indeed the case:
>>
>>PRNG.SetSeed 987654321
>>debug.print PRNG.GetSeed()
>>Randomize 123456789
>>debug.print  PRNG.GetSeed()
>>
>>will print:
>>987654321
>>123456789
>>
>>cheers
>>Paul
>>
>>2011/8/25 David McFarlane <mcfarla9 at msu.edu>:
>> > Ah, I was not thinking about the underlying architecture of the Random()
>> > function, so you got me there!  Now the discussion must get more
>> > technical...
>> >
>> > Of course, if Random() is based on, say, a 32-bit cyclic PRNG, 
>> then it will
>> > repeat its sequence after no more than 2^32 = 4,294,967,296 samples (or
>> > perhaps more like 2^31 = 2,147,483,648 samples, because 
>> E-Basic/VBA does not
>> > use unsigned integers).  But that is not what I had in mind, because we
>> > rarely use Random() to pick numbers from that entire range.
>> >
>> > Rather, I had in mind more common & prosaic uses such as 
>> Random(0,99).  The
>> > underlying architecture now parses the full 32-bit range into 
>> 100 segments,
>> > with no guarantee that it will not draw samples from the same 
>> segment until
>> > a sample has been drawn from each segment.  To the contrary, it 
>> is extremely
>> > likely in this case that it will draw duplicate numbers within 
>> the first 100
>> > samples.  You can see this readily if you try a scaled-down example, say,
>> > Random(0,9) or even Random(0,2) -- I know, I just did this.
>> >
>> > More to the point, I was thinking in terms of my understanding of the
>> > *intent* or *specification* of the Random() function, apart from 
>> its actual
>> > implementation.  As I understand it, Random() is *meant* to act as a die
>> > roll, not as a shuffled deck of cards.  IOW, Random(1,6) should return a
>> > random number from 1 to 6 each time, without regard to what came before
>> > (just like a six-sided die), rather than return a number and then remember
>> > that number and not return it again until all other numbers have been
>> > returned (like a shuffled six-card deck).
>> >
>> > Did I get this right now?
>> >
>> > Best,
>> > -- David McFarlane, Professional Faultfinder
>> >
>> >
>> > At 8/25/2011 03:25 PM Thursday, Paul Groot wrote:
>> >>
>> >> Absolutely; the cyclic chain of numbers will definitely pop-up the
>> >> same numbers after a while... So they must have been but back ;-)
>> >>
>> >> my mistake!
>> >>
>> >> 2011/8/25 David McFarlane <mcfarla9 at msu.edu>:
>> >> > At 8/24/2011 03:20 PM Wednesday, Paul Groot wrote:
>> >> >>
>> >> >> Alternatively you could use a simple inline script at the start of the
>> >> >> trial and use the E-Basic random() function to set durations. (That
>> >> >> would be
>> >> >> uniform random w/o replacement.)
>> >> >
>> >> > Um, wouldn't the E-Basic random() function result in uniform random
>> >> > samples
>> >> > *with* replacement?
>> >> >
>> >> > -- David McFarlane, Professional Faultfinder

-- 
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To post to this group, send email to e-prime at googlegroups.com.
To unsubscribe from this group, send email to e-prime+unsubscribe at googlegroups.com.
For more options, visit this group at http://groups.google.com/group/e-prime?hl=en.



More information about the Eprime mailing list