Note that the variable lineAssignments in the quoted code below is always empty when it is displayed in the field and is empty each time the function randomLog is entered. You can make lineAssignment global to both handlers and it will work.
For a uniformly randomly shuffling function all outcomes should be equal. In other words all the possible outcomes: a,b,c a,c,b b,a,c c,b,a b,c,a c,a,b should all have equal chances of occurring. We can test our functions my letting them pick ten thousands item lists and then see if the occurrence of each list is equal. This is easy to test. Change the number of trail to 10000 and add these lines to the mouseUp handler put myVar into line cnt of fld 1 --new stuff start if myVar is "a,b,c" then add 1 to item 1 of my_sum if myVar is "a,c,b" then add 1 to item 2 of my_sum if myVar is "b,a,c" then add 1 to item 3 of my_sum if myVar is "c,a,b" then add 1 to item 4 of my_sum if myVar is "b,c,a" then add 1 to item 5 of my_sum if myVar is "c,b,a" then add 1 to item 6 of my_sum --new stuff end and these lines end repeat --new stuff start put return & my_sum into line cnt + 1 of fld 1 put return&sum(my_sum) after fld 1 end mouseUp --new stuff end This shows a really skewed non-uniform outcome for the sort by. 3783,1438,1467,1474,1459,379 10000 Whereas my shuffling is pretty uniform. 1671,1673,1728,1657,1612,1659 10000 What you want to be able to make is a random assortment of 1,2,3 1,3,2 2,1,3 3,1,2 3,2,1 2,3,1 to sort your items against. But you aren't. You are generating potentially 27 different sets: 1,1,1 ; 1,1,2 ; 1,1,3 ; 1,2,2 ; 1,2,3 ; 1,3,3 ; 1,3,2 ; 1,3,1 ; 1,2,1 {a,b,c ; a,b,c ; a,b,c ; a,b,c ; a,b,c ; a,b,c ; a,c,b ; a,c,b ; a,c,b} 2,2,2 ; 2,2,1 ; 2,2,3 ; 2,1,1 ; 2,1,3 ; 2,3,3 ; 2,3,1 ; 2,3,2 ; 2,1,2 {a,b,c ; c,a,b ; a,b,c ; b,c,a ; b,a,c ; a,b,c ; c,a,b ; a,c,b ; b,a,c} 3,3,3 ; 3,3,1 ; 3,3,1 ; 3,2,2 ; 3,2,1 ; 3,1,1 ; 3,1,2 ; 3,1,3; 3,2,3 {a,b,c ; c,a,b ; c,a,b ; b,c,a ; c,b,a ; b,c,a ; b,c,a ; b,a,c ; b,c,a} which counts out as a,b,c 10 [3700] a,c,b 4 [1480] b,a,c 3 [1100] c,b,a 1 [370] b,c,a 5 [1850] c,a,b 4 [1480] which looks similar to your results but is really different no less not a uniformly random distribution. I really don't understand why when the random function is in line with the sort command the same distribution is always returned but when the random function is called in a function in line with the sort command it is different. Michael On May 23, 2013, at 2:08 PM, Dar Scott <d...@swcp.com> wrote: > This script demonstrates what is going on with random sorts of short lists > using this: > > sort items of myVar by random( the number of items of myVar) > > This is a button script on a stack with a wide field with a scrollbar. <clipped due to 15K limit> _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode