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

Reply via email to