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.