Wayne,

There is no high level function to accomplish your task in one tag.

Most SQL databases support the ability to:

        SELECT * FROM table ORDER BY NEWID()

        Or in some cases

        SELECT * FROM table ORDER BY UUID()

The point being that SQL assigned IDs/UUIDs are themselves a rather random 
collection of numbers and letters and when sorted create a fairly random result.

TeraScript 6.1 now has @UUID, so you could create a UUID for each row and then 
sort on that value all in TS if you wanted to. Creating a hash on some piece of 
data has the similar effect of creating a random (but repeatable) value.

Your way of using and then deleting a random row from the array would also be 
effective and may give you certain controls - like knowing the state of what 
rows the user has/has not seen.

Requests for something like this are rare, and it's not on my list to add it to 
the product, but if users want to reply to this email reinforcing the request, 
then I'll consider it. I would likely add it as a third "direction" to the 
@SORT function, that way someone could @SORT COLS="1 ASC,RND" - which would 
sort the array on column one, but then randomize rows within those subsets. 
This would actually be a fairly unique and powerful function.

Robert

-----Original Message-----
From: Wayne Irvine [mailto:[email protected]]
Sent: Friday, March 09, 2012 2:54 AM
To: [email protected]
Subject: TeraScript-Talk: Randomise

Is there any simple way to randomise the row order of an array?

I have a bunch of records of image names and ROWIDs I want to use in a 
slideshow and I'd like them to appear in order, selected at random once.

I realise I could use the @RANDOM function with a HIGH of @NUMROWS, grab that 
record, @DELROW from existing array and @ADDROW to a new array and do that 
recursively until I'd been through the whole array but thought there might be a 
function for that already:

<@RANDOMISE ARRAY=myarray>

or

<@SORT ARRAY=myarray ROWS="* RAND">

Wayne Irvine

----------------------------------------

To unsubscribe from this list, please send an email to [email protected] 
with "unsubscribe terascript-talk" in the body.



----------------------------------------

To unsubscribe from this list, please send an email to [email protected] 
with "unsubscribe terascript-talk" in the body.

Reply via email to