Using rand(x,y) in expressions


Author
Message
AKrishna
AKrishna
Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)
Group: Forum Members
Posts: 88, Visits: 267
Hi,

just a quick question: if I set up an expression that includes a rand(x,y) function, will the random number be picked once or will it be repicked every time the expression is called? So for example:

<expressions>
/ MyExpression = 100 + rand(-50,50)
</expressions>

<trial Tester>
/ stimulustimes = [0 = TestText]
/ validresponse = (" ")
</trial>

<text TestText>
/ items = ("Showing number <%expressions.MyExpression%>")
</text>

If trial.Tester is repeated, will there be different values for MyExpression shown? If not, are there any circumstances that might cause the expression to draw a new random number? I'm asking because the closest analogues, new elements from lists, appear to be accessed only when called via a reference to list.MyList.nextitem in an ontrialbegin/ontrialend/branch, not when referenced in a text object using <%list.MyList.nextitem%> - or at least that was my understanding.

Thanks for any help!




AKrishna
AKrishna
Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)
Group: Forum Members
Posts: 88, Visits: 267
AKrishna - Thursday, November 22, 2018
Hi,

just a quick question: if I set up an expression that includes a rand(x,y) function, will the random number be picked once or will it be repicked every time the expression is called? So for example:

<expressions>
/ MyExpression = 100 + rand(-50,50)
</expressions>

<trial Tester>
/ stimulustimes = [0 = TestText]
/ validresponse = (" ")
</trial>

<text TestText>
/ items = ("Showing number <%expressions.MyExpression%>")
</text>

If trial.Tester is repeated, will there be different values for MyExpression shown? If not, are there any circumstances that might cause the expression to draw a new random number? I'm asking because the closest analogues, new elements from lists, appear to be accessed only when called via a reference to list.MyList.nextitem in an ontrialbegin/ontrialend/branch, not when referenced in a text object using <%list.MyList.nextitem%> - or at least that was my understanding.

Thanks for any help!




...and then I realized I could just run my own example code several times.

So expressions do grab a new random number each time they are referenced. And it also turns out I was wrong: lists do grab new list elements even if the only reference to a new element in the trial is in a <text> stimulus using <%list.MyList.nextvalue%>.

So if anyone was wondering...

Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
AKrishna - Thursday, November 22, 2018
AKrishna - Thursday, November 22, 2018
Hi,

just a quick question: if I set up an expression that includes a rand(x,y) function, will the random number be picked once or will it be repicked every time the expression is called? So for example:

<expressions>
/ MyExpression = 100 + rand(-50,50)
</expressions>

<trial Tester>
/ stimulustimes = [0 = TestText]
/ validresponse = (" ")
</trial>

<text TestText>
/ items = ("Showing number <%expressions.MyExpression%>")
</text>

If trial.Tester is repeated, will there be different values for MyExpression shown? If not, are there any circumstances that might cause the expression to draw a new random number? I'm asking because the closest analogues, new elements from lists, appear to be accessed only when called via a reference to list.MyList.nextitem in an ontrialbegin/ontrialend/branch, not when referenced in a text object using <%list.MyList.nextitem%> - or at least that was my understanding.

Thanks for any help!




...and then I realized I could just run my own example code several times.

So expressions do grab a new random number each time they are referenced. And it also turns out I was wrong: lists do grab new list elements even if the only reference to a new element in the trial is in a <text> stimulus using <%list.MyList.nextvalue%>.

So if anyone was wondering...

Just chiming in to confirm: Yes, that's correct, an expression will (and is supposed to) return a new value every time it is called. For <list> elements, things depend on their /selectionrate setting. The default behavior is /selectionrate = trial, i.e. the list will return one item from its pool when it is used in some way in a <trial>. Subsequent references to the list during that instance of the <trial> would return the same value. If the list is set to /selectionrate = always, however, it would perform a new selection every time it is referenced during a given instance of a <trial>.

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search