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