randomly order a list

Björnke von Gierke bvg at mac.com
Fri May 24 07:00:01 EDT 2013

Seems someone beat us to entering this feature request:


On 24.05.2013, at 12:04, Dave Cragg wrote:

> Nice one, Alex. I spent an hour convincing myself that the sA array could contain duplicate elements after the loop, until the penny dropped. Remind me never to play cards if you're shuffling. :-)
> Dave
> On 24 May 2013, at 00:41, Alex Tweedly <alex at tweedly.net> wrote:
>> Yes, that's a good shuffle for small data, but a bit slow for larger data sets. I dug out an old function I wrote a few years ago (and converted it to LC); this would be faster for large data sets (time taken grows linearly rather than by the square of the number of lines).
>> local sA, sIndex  -- filled with random shuffle index, returned one-by-one from fn calls
>> function shuffleLines pSource
>>  put empty into tNew
>>  put the number of lines of pSource into tNum
>>  -- fill an array with 'self' numbers
>>  repeat with i = 1 to tNum
>>     put i into tA[i]
>>  end repeat
>>  repeat with n = tNum down to 1
>>     put random(n) into tRand
>>     put tA[tRand] into sA[n]
>>     put tA[n] into tA[tRand]
>>  end repeat
>>  put 0 into sIndex
>>  sort lines of pSource by _shuffle()
>>  return pSource
>> end shuffleLines
>> function _shuffle
>>  add 1 to sIndex
>>  return sA[sIndex]
>> end _shuffle
>> -- Alex.
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


Use an alternative Dictionary viewer:

Chat with other RunRev developers:

More information about the use-livecode mailing list